ホームページ >バックエンド開発 >PHPチュートリアル >PHP でシェルコマンドをブロックせずに同時に実行するにはどうすればよいですか?

PHP でシェルコマンドをブロックせずに同時に実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-02 14:19:12454ブラウズ

How to Execute Shell Commands Concurrently in PHP without Blocking?

ブロックせずにシェル コマンドを同時実行

多くのアプリケーションでは、特にユーザー インタラクションを処理する場合に、バックグラウンドでの計算集約型タスクの実行が必要です。 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 リダイレクトは標準出力および標準エラー ストリームを破棄し、コマンドからの出力を効果的に停止します。

同時実行の利点

コマンドを同時に実行すると、いくつかの利点があります。 :

  • 長時間実行されるスクリプトによって PHP スクリプトがブロックされるのを防ぎます。 task.
  • ユーザー操作やその他のタスクを中断せずに継続できるようにします。
  • 長時間の実行によって引き起こされる潜在的なタイムアウトやメモリ枯渇の問題を回避します。

注: stdout ストリームと stderr ストリームの両方を /dev/null にリダイレクトするということは、コマンドの出力やエラー メッセージにはアクセスできなくなります。これらをキャプチャする必要がある場合は、パイプやプロセス監視などの代替方法を使用してください。

以上がPHP でシェルコマンドをブロックせずに同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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