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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 12:00:25498ブラウズ

How to Run PHP Commands Asynchronously Without Blocking?

結果を待たずに PHP コマンドを実行する方法

PHP では、exec コマンドは外部コマンドを実行できますが、デフォルトでは PHP は待機します。続行する前にコマンドを終了してください。ただし、特定のシナリオでは、結果を待たずにコマンドを開始して他のタスクを続行することが望ましい場合があります。

解決策:

PHP ドキュメントに解決策が記載されています。ブロックせずにコマンドを実行するには:

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');

これcommand:

  1. run_baby_run コマンドを実行します。
  2. 標準出力と標準エラーを /dev/null にリダイレクトし、コマンドからの出力を抑制します。
  3. バックグラウンドコマンドを使用して、PHP とは独立して実行される別のプロセスを作成します。 script.

プロセスを切り離すための代替解決策:

Apache スレッドからプロセスを切り離し、PHP スクリプトが終了してもプロセスが実行し続けるようにするには、このコマンドを使用します:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');

Thisコマンド:

  1. bash セッションを起動します。
  2. 呼び出し元のスクリプトが終了した場合にプロセスが終了しないように nohup を実行します。
  3. 新しいセッション ID (setsid) を設定します。現在のプロセスからプロセスを切り離します。
  4. として出力を抑制します。前。

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

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