2011-02-03 198 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你的描述也相當混亂恕我直言。

最佳

拉斐爾