Intereting Posts
Разбор NSString как JSON Как преобразовать временную метку Unix в hhmmss? Количество эхо-записей MySQL, которое имеет одинаковый идентификатор сеанса Как я могу извлечь или распаковать gzip-файл, используя php? Строка SQL Select не работает Форма письма в PHP: синтаксическая ошибка, неожиданный T_VARIABLE Работает ли поисковая система Sphinx (или другой третьей стороны) в моем случае или я должен создать свою собственную? Подстановочный знак Laravel Homestead и Nginx поддомен предварительная установка встроенного видео в YouTube Сравнение значений массива с другими значениями из того же массива Как предотвратить перезагрузку файла phpstorm без подсказки при изменении файла на диске? Facebook XMPP Chat API отправить сообщение PHP CodeIgniter – $ this-> uri-> segment () возвращает пустое Использование регулярного выражения subpattern to вместо использования регулярного выражения 2 раза в php Разница между использованием памяти memory_get_peak_usage и фактическим использованием php-процесса

как узнать, какой конкретный процесс все еще работает в PHP

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

Я добавил «& 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 (). Я не уверен, что это то, что вы ищете.