18

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

多くの人が、応答を待たずにコマンドの最後に&すべきだと言いました。
たとえば、bg.phpをバックグラウンドで実行するには、これが推奨されました。

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

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

また、ログファイルにbg.php出力を書き込むためにどこかを読みましたが、バックグラウンド スクリプトは出力を生成しません。何らかのプロセスを実行してから、データベースに何かを書き込みます。

スクリプトで bg.php を実行するだけで、終了するのを待ちません。

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

4

2 に答える 2

23

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

exec($cmd . " > /dev/null &");
于 2012-10-11T15:11:04.573 に答える
1

スクリーンの使用を検討しましたか?切り離されたプロセスで実行される画面セッションを開始できます。

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

その後、まだ実行されている場合は、後で接続できます。

screen -r my_bg_session
于 2015-10-11T00:22:05.640 に答える