ホームページ >バックエンド開発 >PHPチュートリアル >PHP でリアルタイムのプロセス出力を取得し、プロセスを正常に強制終了するにはどうすればよいですか?

PHP でリアルタイムのプロセス出力を取得し、プロセスを正常に強制終了するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-19 17:28:14628ブラウズ

How Can I Get Real-Time Process Output and Gracefully Kill Processes in PHP?

PHP でのリアルタイム プロセス出力

Web ページ上でリアルタイムに出力するプロセスを実行すると、ユーザー エクスペリエンスが向上し、即時的な結果が得られます。フィードバック。 PHP では、proc_open() 関数を使用してこれを実現できます。

リアルタイム出力の取得

プロセスからリアルタイム出力を取得するには、proc_open を使用します。 () は次のようになります:

$cmd = "ping 127.0.0.1";
$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("pipe", "w")
);

$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());

// Display output
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";

このコードでは、ping プロセスの出力が継続的に読み込まれます。パイプ $pipes[1] が表示されます。

ページ終了時にプロセスを強制終了

ページの終了時にプロセスを強制終了するには、次のコードを使用します。

register_shutdown_function(function() use ($process) {
    proc_terminate($process);
    // Wait for process to terminate gracefully
    proc_close($process);
});

このコードは、スクリプトの終了時にプロセスを終了するシャットダウン関数を登録します。また、プロセスが終了するまで適切に待ってから閉じます。

proc_open() と register_shutdown_function() を活用することで、PHP でプロセスを実行し、そのリアルタイム出力を取得できます。ページが終了すると、システム リソースの残留を防ぐためにプロセスが自動的に終了します。

以上がPHP でリアルタイムのプロセス出力を取得し、プロセスを正常に強制終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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