Я не могу использовать $com = new Com('WScript.shell');
Кстати, это вызывает проблемы в моей системе. Возможно, мне нужно обновить свой PHP, потому что он очень старый (5.2), но я полагаю, что то, что я пытаюсь сделать, зависит не от версии.
Я запускаю PHP в Windows 2008 64-бит. Где я могу запустить команду с префиксом start
для запуска команды на отдельной консоли.
start php myscript.php
Если это выполняется из командной строки, он запускает новую консоль для сценария.
Мне нужно сделать то же самое с PHP, используя только exec .
exec("CMD /C start php myscript.php");
/C
– завершение сеанса CMD при завершении скрипта.
Но он не дает одинаковых результатов, он все еще ждет завершения сценария!
Этот шут работает:
exec("start /B php myscript.php");
Также закройте все стандартные потоки в самом начале myscript.php:
fclose(STDIN); fclose(STDOUT); fclose(STDERR);
Если вы хотите, чтобы echo
все еще работало, вы можете открыть файл для записи в stdout после закрытия стандартных потоков:
$STDIN = fopen('/dev/null', 'r'); $STDOUT = fopen('myscript.log', 'wb');