php - PHP-exec / shell_execの定期的な出力のキャプチャと表示?

php linux shell stdout

exec()またはshell_exec()を使用して、ls -l /var/www/mysiteなどのシステムコマンドを簡単に実行し、コマンドの結果を出力できます。

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

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

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

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

python myscript.py > output.txt


そして、Ajaxを使用してtailまたはcatのコンテンツを定期的にoutput.txtし、ブラウザーに表示することを計画していました。ただし、スクリプトが強制終了されるまで、output.txtにはコンテンツが追加されていないようです。
答え
バッファリングされているため、output.txtへの出力は表示されません。 Pythonの場合、ラインバッファリングするオプションがあります。マンページから:

       -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.


したがって、コマンドは次のようになります。

python -u myscript.py > output.txt


PHPの場合、flush関数が役立ちます。
関連記事

php - PHP文字列/関数:文字列を関数のチェーンに変換する

php - PHPおよびGPS座標、複数のポイントで構成されるパスに沿った合計距離を取得

php - joomlaコンポーネントを開発したいのですが、どのバージョンをサポートすればよいですか?

php - Oracleストアドプロシージャから配列結果を取得する方法

php - PHPを使用してWAVファイルを結合する方法

php - TinyMCEにドラッグアンドドロップしながらimgデータをimg urlに変更する方法は?

php - クエリ結果で関連する(結合された)テーブルのフィールドを並べ替える方法

php - Magentoカスタムproduct_listブロックの空白の製品データ

php - すべての画像タグをリンク付きの文字列で囲む

php - Ajaxフォーム送信ボタンで送信