как узнать конкретный процесс все еще работает в PHP - PullRequest
2 голосов
/ 15 июля 2009

Я пишу скрипт, который строит очередь из других скриптов и должен управлять их запуском. сценарий менеджера должен знать, какой дочерний процесс завершен, чтобы он мог запускать другие сценарии, ожидающие в очереди.

Я добавил "& echo $!" чтобы получить идентификатор процесса каждого дочернего процесса. поэтому у меня есть дочерние процессы Process Ids, и на данный момент я использую системный вызов программы "ps", чтобы определить, запущены ли дочерние процессы или нет.

Дело в том, что мой скрипт в настоящее время работает только в Unix-подобных системах. Я не знаю, как получить PID моего ребенка в Windows, и мой сценарий еще не анализирует вывод команды «tasklist» в Windows.

Есть ли другой способ добиться этого? Любое решение в PHP, чтобы найти, если дочерний процесс все еще работает? решение для запуска других процессов (не блокирующих) и проверки, запущены они или нет.

Ответы [ 3 ]

0 голосов
/ 12 октября 2009

Что вы можете сделать, это создать базу данных или файл, который будет содержать ваши идентификаторы процессов. Каждый процесс запишет свой pid (идентификатор процесса) в файл или БД. Используйте этот метод, чтобы получить ваш php pid:

getmypid();

Ваш надзорный процесс время от времени будет проверять, все ли запущен идентификатор процесса, со следующими данными:

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

Когда процесс остановлен, вы можете выполнить следующий процесс

и для использования окон проверьте комментарий в руководстве: http://no2.php.net/manual/en/book.exec.php#87943

0 голосов
/ 20 октября 2011

Вы пробовали proc_get_status ()? В этом случае вы можете порождать свои дочерние процессы с помощью proc_open (). Я не уверен, что это то, что вы ищете.

0 голосов
/ 15 июля 2009

Вы можете найти Process Control интересным для сред Unix. Вы также можете найти пример выполнения программ под Windows в виде комментария в руководстве , и это наводит меня на мысль о COM-объектах.

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