exec () ожидает ответа в PHP

Возможный дубликат:
Команда php exec (или аналогичная), чтобы не дождаться результата

У меня есть страница, которая запускает ряд команд exec() чего мой PHP-скрипт останавливает изменение до получения ответа. Как я могу сказать exec() чтобы не дождаться ответа и просто запустить команду?

Я использую сложную команду, которая имеет бэкэнд-систему, которую я могу запросить, чтобы проверить статус, поэтому я не заинтересован в ответе.

Зависит от используемой вами платформы и от команды, которую вы используете.

Например, в Unix / Linux вы можете добавить > /dev/null & в конец команды, чтобы сообщить оболочке освободить процесс, который вы запустили, и exec немедленно вернется. Это не работает в Windows, но есть альтернативный подход с использованием COM-объекта (см. Ниже).

Многие команды имеют аргумент командной строки, который может быть передан, поэтому они освобождают свою связь с терминалом и немедленно возвращаются. Кроме того, некоторые команды будут зависать, потому что они задали вопрос и ждут ввода пользователем, чтобы сообщить им продолжить (например, при запуске gzip и целевой файл уже существует). В этих случаях обычно есть аргумент командной строки, который можно передать, чтобы сообщить программе, как справиться с этим, и не задавать вопрос (в примере gzip вы должны передать -f ).

РЕДАКТИРОВАТЬ

Вот код, который нужно делать в Windows, если доступен COM :

 $commandToExec = 'somecommand.exe'; $wshShell = new COM("WScript.Shell"); $wshShell->Run($commandToExec, 0, FALSE); 

Обратите внимание, что это третий параметр FALSE который сообщает WshShell о запуске программы, а затем немедленно возвращается (второй параметр 0 определяется как «стиль окна» и, вероятно, здесь бессмысленен – ​​вы можете передать любое целочисленное значение). Объект WshShell описан здесь . Это определенно работает, я использовал его раньше …

Я также отредактировал выше, чтобы отразить тот факт, что для соединения /dev/null требуется также подключение к /dev/null чтобы работать с exec() на * nix.

Также добавлено немного больше информации о WshShell.

Раньше у меня была удача в конструкциях, подобных следующим (окна, но я уверен, что есть эквивалентная команда в * nix

 pclose(popen('START /B some_command','r')); 

Как насчет запуска команды в фоновом режиме?

 exec('./run &');