2011-02-03 229 views
0

我试图减少我的脚本内存使用甚至更多。我试图让我的脚本使用xdebug生成输出来分析内存使用情况。这是一个基于命令行脚本有家当xdebug_start_trace行为奇怪

#!/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 &到它,所以它在后台运行。

这让我疯狂!帮助,伙计们!

回答

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为开,事实证明,如果你是追加&> /dev/null &的命令,不产生Xdebug的日志。但是,如果我的&> /dev/null(注意最后的&),xdebug会生成日志。这可能与自定义输出有关,xdebug必须在内部使用。不知道,但。

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)); 

...只是离开了condiional语句给你什么事?

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

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

最佳

拉斐尔