2012-01-17 7 views
2

exec()またはshell_exec()を簡単に使用して、ls -l /var/www/mysiteのようなシステムコマンドを実行し、コマンドの結果を出力できます。PHP - exec/shell_execの定期出力をキャプチャして表示しますか?

情報を定期的にコンソールに出力するコマンドの実行結果をどのように表示して表示しますか?

例: 単純なPythonスクリプトがあります。コンソールからスクリプトを実行すると、スクリプトを強制終了するまで、何らかの情報がコンソールに10秒ごとに永久に出力されます。

どのようにこのpythonコマンドを実行し、何とかキャプチャし、リアルタイムでブラウザに出力をストリームするPHPを使用することができますか?このようなことは可能でしょうか?私はAjaxに何らかの関係がなければならないと思っていますが、わかりません。

私はこのような何かをやってみました:

python myscript.py > output.txt 

をそして私は多分に定期的にtailまたはcatブラウザでoutput.txtや表示内容のAjaxを使用して計画されました。しかし、output.txtは、スクリプトが強制終了されるまで、コンテンツが追加されていないようです。

答えて

2

output.txtにバッファリングされているため、出力が表示されません。 Pythonには、ラインバッファにするオプションがあります。 manページから:

 -u  Force the binary I/O layers of stdin, stdout and stderr to be unbuffered. The text I/O layer will still be 
       line-buffered. 

だからあなたのコマンドはその後になる:PHP flush機能については

python -u myscript.py > output.txt 

はあなたを助ける必要があります。

+0

これは正しいアプローチだと思われますが、PHPはまだ私が考えるものをバッファしています...しかし、応答に感謝します。 –

+0

@Jakobud、PHPスクリプトで 'flush'を手動で呼び出そうとしましたか? –

+0

ああ、私はそれを試していません。私はその方向に行き、それが機能するかどうかを見ました。ありがとう。 –

関連する問題