Выполнить действие после завершения процесса в PHP - PullRequest
1 голос
/ 07 ноября 2011

Я использовал эту функцию, чтобы проверить, запущен процесс или нет. (Я получил от http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/):

function Is_Process_Running($PID){

exec("ps $PID", $ProcessState); 
return(count($ProcessState) >= 2);  
}

Насколько я понимаю, функция вернется, только если массив $ ProcessState содержит более двух строк, что будет, если процесс активен.

Таким образом, легко кодировать что-либо для выполнения действия, пока процесс выполняется, как показано ниже (также ссылка сверху):

while(is_process_running($PID))
   {
     echo(" . ");
       ob_flush(); flush();
            sleep(1);
   }

Но тогда каков наилучший способ выполнить действие после завершения процесса? Я попробовал:

while(! is_process_running($PID))

но это не работает, я думаю, потому что это проходит цикл только один раз. Любая помощь очень ценится, спасибо!

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Просто поместите код для выполнения после цикла:

// Process is still running
while (is_process_running($PID))
{
  // wait
}

// Process is no longer running
do_stuff_afterwards();

Если вам нужно выполнить ветвление в зависимости от того, выполняется ли процесс вообще, вы можетеоберните все это в условное if (is_process_running($PID)).

1 голос
/ 07 ноября 2011

Проверьте функции PCNTL (http://php.net/manual/en/ref.pcntl.php). В зависимости от того, что вы пытаетесь сделать, эта библиотека может быть очень полезна. На отдельных страницах функций есть несколько примеров кода ... check pcntl_wait ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...