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

リクエストをブロックせずに PHP でシェル スクリプトを非同期に実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-23 18:05:16
オリジナル
951 人が閲覧しました

How Can I Run a Shell Script Asynchronously in PHP Without Blocking the Request?

PHP での非同期シェルの実行: 待たずに実行してください

問題ステートメント:

PHP スクリプトを考案するPHP リクエストを損なうことなくシェル スクリプトをシームレスに呼び出します。 パフォーマンス。従来の実行方法とは異なり、このスクリプトはシェル スクリプトの完了を待たず、PHP リクエストを独立して終了できます。

解決策:

非同期シェル実行を実現するには、次の手法を使用します:

  1. プロセスを呼び出すバックグラウンド: シェル スクリプトの呼び出しに「&」文字を追加します。これによりプロセスがバックグラウンドになり、PHP スクリプトが完了を待たずに続行できるようになります。
  2. 出力ストリームとエラー ストリームのリダイレクト: に「 > /dev/null 2>/dev/null」を追加します。シェルスクリプトの呼び出し。これにより、標準出力とエラー ストリームの両方が「/dev/null」にリダイレクトされ、事実上破棄されます。

この組み合わせた構文により、PHP リクエストを遅らせることなく、シェル スクリプトがバックグラウンドで非同期に実行されます。

例:

exec("script.sh > /dev/null 2>/dev/null &");
ログイン後にコピー

代替構文:

二重リダイレクト方法のもう 1 つの代替方法は、「 &> /dev/null &」を使用することです。このアプローチでは、プロセスをバックグラウンドで実行しながら、標準出力とエラー ストリームの両方を「/dev/null」にリダイレクトすることで、同じ結果が得られます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート