ホームページ >バックエンド開発 >PHPチュートリアル >PHP で実行中のプロセスからリアルタイムの出力を取得するにはどうすればよいですか?

PHP で実行中のプロセスからリアルタイムの出力を取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 02:56:10803ブラウズ

How Can I Get Real-Time Output from Running Processes in PHP?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。