0

PHPでは、

 I need to execute background tasks. So I have three choices to run script from 
 following commands:

 1)exec
 2)shell_exec
 3)passthru

 I randomly decided to use exec command in PHP.
 Because All of these have similar characteristics.

バックグラウンドで実行されるものはありますdisadvantage of exec() commandか?実際、私はこのコマンドについてあまり認識していません。

メインスレッドとは別スレッドにするのですか?このバックグラウンド スレッドyes thenをクリーンアップまたは一時停止する方法はありますか?it simply forget it after firing the command

私のコードでは必要があるため、これを求めていますrun this script very fast one after one within momentsそれで、それはサーバー負荷を作成しますか?

編集: 私は次のようなexecコマンドを使用しています:

exec("/usr/bin/php /path/to/Notification.php >> /path/to/log_file.log 2>&1 &");

これについて私を案内してください。どんな助けでも大歓迎です。

4

2 に答える 2

3

exec()コマンドが終了するのを待つかどうかは、あなたが行う呼び出しの種類に完全に依存します。もちろん、サーバーで多くのバックグラウンド スレッドを実行すると、多くの CPU 負荷が発生する可能性があります。

通常、実行するコマンドexec()はバックグラウンドで実行されません。つまり、PHP スクリプトはコマンドの実行が完了するまで待機します。コマンドをバックグラウンドで実行するには、出力ストリームをリダイレクトし、これをコマンドに追加してバックグラウンドで実行するように明示的に指示する必要があります。

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

もちろん、これの欠点は、コマンドの結果を PHP に戻すことができないことです。それは火と忘れるでしょう。

于 2013-09-06T07:58:53.813 に答える
1

標準出力とエラー出力の両方をファイルにリダイレクトするので、ここで exec を使用するか、shell_exec を使用するか、パススルーを使用するかは問題ないと思います。

私が知る限り、これらはそれらの主な違い

です shell_exec(): 標準出力全体を返します (端末には何も表示されません)

exec(): shel_exec() と同じですが、標準の最後の行を返すだけですoutput

passthru(): これはコマンドを呼び出すようなもので、出力を返す代わりに端末に表示します。

于 2013-09-06T08:43:22.850 に答える