2

PHPのバックグラウンドプロセスを支援するために次のWebサイトを使用しています-http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/

私のコードは基本的に同じですが、私のshell_execメソッドは次のようになっています-
nohup php -f /my/path/to/import_products.php 2 > /dev/null 2> /dev/null & echo $!

実行しているPHPスクリプトは問題なく実行され、製品がインポートされますが、を1つだけに追加するsleep(10)import_products.phpwhile(is_process_running($ps))ループが1回だけ終了します。

コマンドのshell_exec実行は、(から)10秒待つのではなく、すぐに完了しているようsleep(10)です。

なぜこれが起こるのか、何か考えはありますか?

編集
私の質問は本当に「PHPスクリプトがpsに表示されなくなる前に、プロセスが終了するのを待っていないのはなぜですか?」ということだと思います。-確かに、PHPスクリプトが10秒間スリープしているので、ps $pidそのプロセスを最低10秒間表示する必要がありますか?

4

1 に答える 1

1

それに応じてコードを変更してください。

  1. #!/usr/bin/env /usr/bin/phpphpタグを開始する前に、phpファイルの先頭に 追加 してください。
  2. 変更しshell_exec("nohup /usr/bin/php /my/path/to/import_products.php > /dev/null &")ます。

私のphpパスは/usr/ bin / phpであり、ubuntu osを使用していることに注意してください。したがって、php実行可能パスが異なる場合は、それに応じてこれを置き換えてください。

于 2012-04-26T09:23:39.513 に答える