Я пишу скрипт, который создает очередь других скриптов и должен управлять их запуском. сценарий менеджера должен знать, какой дочерний процесс завершен, поэтому он может запускать другие сценарии, ожидающие очереди.
Я добавил «& echo $!» для получения идентификатора процесса каждого дочернего процесса. поэтому у меня есть мои дочерние процессы Идентификаторы процессов, и теперь я использую системный вызов «ps» для поиска, если дочерние процессы все еще работают или нет.
дело в том, что мой скрипт работает только в Unix-подобных системах. Я не знаю, как получить PID моих детей в окнах, и мой скрипт не анализирует вывод команды «tasklist» в Windows.
Есть ли другой способ достичь этого? любое в-PHP решение, чтобы найти, если дочерний процесс все еще работает? решение начать другие процессы (не блокируя) и проверить, все ли они работают или нет.
Вы можете найти Process Control интересным для сред Unix. Вы также можете найти пример выполнения программ в Windows как комментарий в руководстве , и это указывает на то, что я думаю о COM-объектах.
Вы можете создать базу данных или файл, в котором будут храниться ваши идентификаторы процессов. Каждый процесс будет писать свой pid (идентификатор процесса) в файле или DB. Используйте этот метод для получения вашего 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
Вы пробовали proc_get_status ()? В этом случае вы можете создать дочерние процессы с помощью proc_open (). Я не уверен, что это то, что вы ищете.