ホームページ >バックエンド開発 >PHPチュートリアル >PHP でシェルコマンドをブロックせずに同時に実行するにはどうすればよいですか?
ブロックせずにシェル コマンドを同時実行
多くのアプリケーションでは、特にユーザー インタラクションを処理する場合に、バックグラウンドでの計算集約型タスクの実行が必要です。 PHP では、この目的に通常、shell_exec 関数が使用されます。ただし、タスクが完了するまでにかなりの時間がかかる場合、PHP スクリプトの実行フローがブロックされるため、問題が発生する可能性があります。終了を待たずにシェル コマンドを実行する方法はありますか?
リダイレクトを使用した同時実行
はい、シェル コマンドをリダイレクトなしで同時に実行することは可能です。 PHP スクリプトをブロックします。これは、コマンドの出力ストリームとエラー ストリームを null にリダイレクトすることで実現できます。その方法は次のとおりです。
shell_exec('php measurePerformance.php 47 844 [email protected] > /dev/null 2> /dev/null &');
コマンドの末尾の & 記号は、シェルにコマンドをバックグラウンドで実行するように指示します。 > /dev/null と 2> /dev/null リダイレクトは標準出力および標準エラー ストリームを破棄し、コマンドからの出力を効果的に停止します。
同時実行の利点
コマンドを同時に実行すると、いくつかの利点があります。 :
注: stdout ストリームと stderr ストリームの両方を /dev/null にリダイレクトするということは、コマンドの出力やエラー メッセージにはアクセスできなくなります。これらをキャプチャする必要がある場合は、パイプやプロセス監視などの代替方法を使用してください。
以上がPHP でシェルコマンドをブロックせずに同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。