Я пишу пару сценариев PHP для выполнения программы, захвата ее STDOUT и захвата кода возврата, когда она завершится.Эти программы могут возвращаться мгновенно или завершаться через 20 минут, поэтому мне нужно следить за их завершением.
Я не могу найти способ запустить программу в фоновом режиме и записать код возврата [на внешнийжурнальный файл].Если я просто использую exec или proc_open, мой php-скрипт заблокируется, что бесполезно, когда процесс занимает 20 минут.
Даже если я не могу захватить код возврата, мне нужно знать, когда процессзакончил(Вместо этого я могу поместить коды ошибок в STDOUT)
Я могу использовать exec("start my.exe");
и перехватить STDOUT, но не могу получить код возврата (и также не знаю, когда он закончится)
Я думал сделать это через пакетный файл exec(start my.bat);
, и в пакетном файле перехватить код возврата, но моя командная строка имеет динамические параметры, поэтому я вполне могу сделать что-то вроде;
exec("start cmd \"echo hello\");
Редактировать: Но я не нашел способа динамически создать список команд в командной строке.Если кто-нибудь знает подход, я был бы очень признателен.
cmd /C "echo hello"
является решением этой проблемы
Не обязательно быть кроссплатформенным, строго Windows (XP-7)