Xdebug的

我试图减少我的脚本内存使用甚至更多。 我试图让我的脚本使用xdebug生成输出来分析内存使用情况。 这是一个基于CLI的脚本,有shebang

#!/usr/local/bin/php -q

我传递一个参数给它并检查它

$argc > 1 && is_numeric( $argv[1] )

当我登录到ssh并执行./script.php 90并添加此代码时,

if( $argv[1] == 90 ) {
       xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );
}

我在logs文件夹中看到输出文件。

但是当我在生产脚本中没有使用if语句的xdebug_start_trace时,没有输出文件被创建。

script.php是从另一个php文件中调用的,放在另一个文件夹中,所以我使用绝对路径在文件名中,并使用exec调用它并追加&> /dev/null & ,以便它在后台运行。

这真让我抓狂! 帮助,伙计们!


不知道为什么发生这种情况,但我得到了一个错误

PHP Notice: Function trace already started in /var/www/html/script.php on line 9 [请PHP Notice: Function trace already started in /var/www/html/script.php on line 9 “编辑”获取信息]

虽然,没有代码触发这个xdebug_start_trace();

所以我把xdebug_stop_trace();xdebug_start_trace();之前xdebug_start_trace(); ,一切正常。

奇怪。

编辑:我得到了上述错误,因为我在php.ini中设置了auto_trace为On

另外,事实证明,如果您将&> /dev/null &追加到命令中,则不会生成xdebug日志。 但是,如果我执行&> /dev/null (注意最后一个& ),则xdebug会生成日志。 这可能与自定义输出有关,xdebug必须在内部使用。 不知道,但。


你意思是 ...

if( $argv[1] == 90 ) {
       xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );
}

...导致跟踪文件和...

xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) );

......只是抛出调解性声明让你没有?

而且,我真的不能相信跟踪从哪里开始......所以必须有一个函数调用的地方。 鉴于你的描述,它似乎像你的设置是相当混乱。 所以我不认为你的问题与XDebug有任何关系,但是这种跟踪现象只是你偶然发现的一个随机症状。

尝试设置一个尽可能简单的脚本,并且仍然给你这个。 然后再次发布发生了什么事情,B / C你的描述也相当混乱恕我直言。

最好

拉斐尔

链接地址: http://www.djcxy.com/p/37161.html

上一篇: xdebug

下一篇: php execute a background process