Как выполнить PHP-скрипты в фоновом режиме, используя EXEC() и CMD

Я не могу использовать $com = new Com('WScript.shell'); Кстати, это вызывает проблемы в моей системе. Вероятно, мне нужно обновить мой PHP, потому что он очень старый (5.2), но я полагаю, что я пытаюсь сделать, не зависит от версии.

Я использую PHP на 64-битной Windows 2008. Где я могу запустить команду с префиксом start запустить команду на отдельной консоли.

start php myscript.php

Если это выполняется из командной строки, запускается новая консоль для скрипта.

Мне нужно сделать то же самое из PHP, используя только exec.

exec("CMD /C start php myscript.php");

/C завершить сеанс CMD, когда скрипт завершится.

Но он не дает таких же результатов, он все еще ждет завершения сценария!

1 ответ

Решение

Эта работа:

exec("start /B php myscript.php");

Также закройте все стандартные потоки в самом начале myscript.php:

fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);

Если ты хочешь echo чтобы по-прежнему работать, вы можете открыть файл для записи в стандартный вывод после закрытия стандартных потоков:

$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('myscript.log', 'wb');
Другие вопросы по тегам