web-dev-qa-db-ja.com

exec関数を使用したphpバックグラウンドプロセス

正確な答えを見つけるためにたくさん検索しましたが、見つかりませんでした。

多くの人が、コマンドの最後に応答を待たないようにする必要があると述べました
たとえば、バックグラウンドでbg.phpを実行するには、これが推奨されました。

exec("/usr/bin/php bg.php &");  

しかし、それは私にはうまくいきません。メインスクリプトはbg.phpの完全な実行を待ちます。

また、どこかで読み取り、ログファイルにbg.php出力を書き込みましたが、バックグラウンドスクリプトで出力が生成されません。それはいくつかのプロセスを実行し、次にデータベースに何かを書き込みます。

スクリプトでbg.phpを実行し、終了するのを待たないでください。

正しいコードを含めてください。

18
Aliweb

プログラムの出力もどこかに再ルーティングする必要があります。通常は/ dev/null

exec($cmd . " > /dev/null &");
22
ninaj

Screenの使用を検討しましたか?デタッチされたプロセスで実行されるスクリーンセッションを開始できます。

screen -d -m -S my_bg_session /usr/bin/php bg.php

その後、まだ実行中の場合は、後で接続できます。

screen -r my_bg_session
1
moodboom