PHP での非同期シェル実行: 出力の独立性の実現
スクリプトの完了に長時間を要する場合、PHP 経由でシェル スクリプトを実行すると、パフォーマンスの問題が発生する可能性があります。これを軽減するには、そのようなプロセスを非同期で実行し、スクリプトの完了や出力を待たずに PHP リクエストを続行できるようにすることが望ましいです。
exec() やshell_exec() などの従来の関数は、非同期を直接サポートしていません。実行。ただし、この目標を達成するための別のアプローチもあります。
簡単な解決策には、'&' 演算子を使用してプロセスをバックグラウンド化することが含まれます。コマンドに「&」を追加すると、シェルがバックグラウンドでコマンドを実行し、PHP スクリプトが妨げられずに続行できるようになります。
わかりやすくするために、次の例を検討してください。
exec("my_shell_script.sh &");
Inこのシナリオでは、「my_shell_script.sh」がバックグラウンドで実行され、PHP スクリプトはその実行を待たずに実行を続けます。 Output.
もう 1 つの方法は、標準出力 (stdout) と標準エラー (stderr) の両方を null デバイスにリダイレクトすることです。コマンドに「 &> /dev/null 2>&1」を追加すると、出力とエラーが破棄され、パフォーマンスがさらに向上します。
この手法を使用した例を次に示します:
exec("my_shell_script.sh &> /dev/null 2>&1 &");
これらの手法を利用すると、PHP でシェル スクリプトを非同期に実行でき、Web アプリケーションの応答性を向上させながら、長時間実行されるタスクを処理できます。背景。
以上がパフォーマンスを向上させるために PHP で非同期シェル実行を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。