1. ホーム
  2. php

[解決済み】PHPでの非同期シェル実行

2022-04-11 20:37:28

質問

シェルスクリプトを呼び出す必要があるPHPスクリプトがあるのですが、出力には全く関心がありません。シェルスクリプトはSOAPを何度もコールしており、完了までに時間がかかるため、応答を待つ間、PHPリクエストの速度を落としたくありません。実際、PHP リクエストはシェルプロセスを終了させることなく終了できるはずです。

いろいろ調べてみると exec() , shell_exec() , pcntl_fork() などの関数がありますが、どれも私が欲しいものを正確に提供していないようです。(あるいは、そうであっても、その方法がよくわからないのです。) 何か提案はありますか?

解決方法は?

もし、quot;doesn't care about the output"であれば、スクリプトへのexecは & を使用して、プロセスをバックグラウンドにすることはできますか?

EDIT - を組み込んでいます。 アダム・ザ・ハット がこの記事にコメントしたように、これを呼び出しに追加することで exec :

" > /dev/null 2>/dev/null &"

これは stdio (最初の > ) と stderr ( 2> ) から /dev/null を作成し、バックグラウンドで実行します。

同じことをする方法は他にもありますが、これが一番シンプルに読めます。


上記のダブルリダイレクトの代替案です。

" &> /dev/null &"