PHP のシェル実行によるリアルタイム出力
shell_exec や exec などの関数を使用した PHP でのシェル実行は、オペレーティングシステム。ただし、デフォルトでは、これらの関数はコマンドが完了した後にのみ出力全体を表示します。これにより、進行状況を監視したり、リアルタイムの更新を表示したりする機能が制限されます。
解決策: ライブ出力を解放する
リアルタイムの出力表示を実現するために、PHP は 2 つの主要な機能を提供します。オプション:
popen() (並列用)インタラクション:
popen() を使用すると、子プロセスとの双方向通信チャネルを確立できます。これにより、子プロセスをファイルであるかのように読み書きできるようになります。ループと fread() を使用すると、出力をキャプチャして動的に表示できます。
passthru() 直接出力:
より単純なアプローチとして、 passthru() を使用してコマンドの出力をブラウザに直接出力できます。これは、中間ストレージを使用せずに結果をストリーミングする便利な方法を提供します。
popen() を使用したコード例:
// Ensure flushing of output buffers while (@ ob_end_flush()); // Open the child process for reading $proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; // Keep reading and displaying output until EOF while (!feof($proc)) { echo fread($proc, 4096); flush(); } echo ''; // Close the process pclose($proc);
注:
以上がPHP のシェル コマンドからリアルタイム出力を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。