我正在尝试减少脚本内存使用量。我试图让我的脚本使用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 &
追加到它,所以它在后台运行。
这让我抓狂!帮帮忙,伙计们!
答案 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你的描述也很混乱恕我直言。
最佳
拉斐尔