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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-01 08:28:19554ブラウズ

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

shell_exec を使用したシェル コマンドの非同期実行

時間のかかるタスクをバックグラウンドで実行することは、Web アプリケーションでは非常に重要です。たとえば、ユーザーのリクエストにより、ユーザーの対話をブロックすべきではない、計算集約型のプロセスがトリガーされる場合があります。 PHP 関数shell_exec はシェル コマンドを実行する便利な方法ですが、コマンドが完了するまでスクリプトが待機する必要があり、ユーザー エクスペリエンスを妨げる可能性があります。

これを修正するには、shell_exec 呼び出しを変更します。 。コマンドに「> /dev/null 2>/dev/null &」を追加すると、完了を待たずにコマンドを実行できます。

次の例は、この手法を示しています。

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

この変更により、コマンドの標準出力および標準エラー ストリームも破棄されることに注意してください。出力のキャプチャが必要な場合は、プロセス制御ブロック (PCB) の使用やデーモン プロセスの実装などの代替手法を検討できます。

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

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