2011-02-03 4 views
0

スクリプトのメモリ使用量をさらに減らそうとしています。私は、xdebugを使ってスクリプトの出力を生成させ、メモリ使用量を分析しようとしています。これは、CLIベースのスクリプトがシェバングxdebug_start_traceが異常に動作しています

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

私はそれにパラメータを渡すと、私はSSHとやる./script.php 90をして、このコードを追加するには、ログインすると

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

でそれを確認し、

を持っています
if($argv[1] == 90) { 
     xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999)); 
} 

出力ファイルはlogsフォルダにあります。

しかし、xdebug_start_traceifステートメントなしでプロダクションスクリプトに挿入すると、出力ファイルは作成されません。

script.phpは別のフォルダに置かれているので、ファイル名に絶対パスを使用してexecを使用して呼び出すと、&> /dev/null &が追加されてバックグラウンドで実行されます。

これは私を夢中にしています!ヘルプ、みんな!

答えて

1

これが発生した理由を知っているが、このxdebug_start_trace();をトリガーするコードがない、が、私はエラー

PHP Notice: Function trace already started in /var/www/html/script.php on line 9 [情報については、「編集」をチェック]

を持っていないでください。

xdebug_start_trace();の前にxdebug_stop_trace();を置きます。すべて正常です。

Strange。

編集:私はまた

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に関係しているとは思えませんが、この痕跡現象はあなたが気づいたばかりのランダムな症状です。

できるだけシンプルなスクリプトを設定してみてください。その後、何が起こっているのかを再度投稿してください。あなたの説明は、IMHOもかなり混乱しています。

ベスト

ラファエル

関連する問題