Фоновый Процесс PHP Не работает


Я использую следующий веб-сайт, чтобы помочь мне с фоновыми процессами в PHP - 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-скрипт, который он выполняет, работает просто отлично, и продукты импортируются, но когда я добавляю sleep(10) в import_products.php, while(is_process_running($ps)) зацикливается только один раз и завершается.

Похоже, что команда shell_exec выполняется так завершается немедленно, вместо того, чтобы ждать 10 секунд (с sleep(10)).

Есть идеи, почему это может быть?

Редактировать
Я предполагаю, что мой вопрос на самом деле таков: "Почему процесс не ожидает завершения PHP-скрипта до того, как он перестанет отображаться в ps?" - Конечно, поскольку PHP-скрипт спит в течение 10 секундps $pid должен показывать этот процесс минимум 10 секунд?

Author: Sam, 2012-04-26

1 answers

Пожалуйста, измените свой код соответствующим образом.

  1. Добавьте #!/usr/bin/env /usr/bin/php в начало вашего php-файла перед запуском тега php.
  2. Изменение shell_exec("nohup /usr/bin/php /my/path/to/import_products.php > /dev/null &").

Пожалуйста, обратите внимание, что мой путь к php - это /usr/bin/php, и я использую ОС ubuntu.Поэтому, если ваш путь к исполняемому файлу php отличается, замените его соответствующим образом.

 1
Author: Dev, 2012-04-26 09:30:53