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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 14:37:12788ブラウズ

How Can I Asynchronously Execute Shell Commands in PHP Without Blocking?

シェル コマンドの非同期実行

PHP スクリプトでリソースを大量に消費するタスクを処理する場合、バックグラウンドでタスクを実行することが望ましいことがよくあります。他のコードの実行をブロックしないようにします。シェル コマンドを実行する一般的な方法の 1 つは shell_exec ですが、通常、コマンドが完了するまでスクリプトが待機する必要があります。

完了を待たずにシェル コマンドを実行するには、バックグラウンド実行テクニックを利用できます。これは、シェル コマンドの標準出力ストリームと標準エラー ストリームを null デバイスにリダイレクトすることで実現されます。

次の PHP コードを考えてみましょう。

shell_exec('php measurePerformance.php 47 844 [email protected] > /dev/null 2>/dev/null &');

このコードでは、次の戦略を採用しています。 :

  • 私たちは > を使用します。 /dev/null を使用して、コマンドの標準出力を null デバイスにリダイレクトし、効果的にそれを破棄します。
  • 2>/dev/null を使用して、コマンドの標準出力を別の null デバイスにリダイレクトし、再度破棄します。
  • 最後に、& を追加します。コマンドの最後に を追加すると、バックグラウンドで実行できます。

この手法を使用すると、シェル コマンドを非同期に生成でき、コマンドの完了を待たずに PHP スクリプトを解放して実行を継続できます。

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

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