PHP で実行中のプロセスからのリアルタイム出力
Web 開発では、多くの場合、サーバー上でプロセスを実行し、そのプロセスを表示する必要があります。リアルタイムでクライアントに出力します。この機能は、システム リソースの監視、ログの収集、外部ツールとの統合などのタスクに非常に重要です。
リアルタイム出力によるコマンドの実行
プロセスを実行するにはその出力を PHP でキャプチャするには、proc_open() 関数を使用できます。この関数を使用すると、プロセスを実行するためのコマンド、入出力ストリーム、およびその他のオプションを指定できます。次の例は、proc_open() を使用して 'ping' コマンドを実行し、その出力をストリーミングする方法を示しています。
$cmd = "ping 127.0.0.1"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); flush(); $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array()); echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
このスクリプトでは、'ping' コマンドが実行され、その stdout がパイプ。ループは継続的にパイプから読み取り、出力を Web ページに出力します。
リアルタイム プロセスの終了
ページが読み込まれると、「ping」プロセスが実行されます。が開始され、ページが閉じるまで実行され続けます。ページのアンロード時にプロセスを適切に終了するには、proc_terminate() 関数を使用します。
proc_terminate($process);
この関数は、プロセスにシグナルを送信して実行を終了します。
以上がPHP で実行中のプロセスからリアルタイムの出力を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。