xdebug_start_trace表现得很奇怪

时间:2011-02-03 06:48:02

标签: xdebug php

我正在尝试减少脚本内存使用量。我试图让我的脚本使用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文件夹中看到了输出文件。

但是当我在生产脚本中放置xdebug_start_trace而没有if语句时,没有创建输出文件。

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

这让我抓狂!帮帮忙,伙计们!

2 个答案:

答案 0 :(得分:1)

不知道为什么会这样,但我收到了错误

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

虽然没有代码可以触发此xdebug_start_trace();

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

奇怪。

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

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

答案 1 :(得分:0)

你的意思是......

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你的描述也很混乱恕我直言。

最佳

拉​​斐尔