PHP exec(), я могу запустить и забыть?
Я пытался выполнить Java-приложение через php-форму.. поэтому кнопка отправки запускает команду execute:
exec("java -jar c:\edu.uniroma3.jar c:\parameter2BPassed");
Первый путь определяет, где находится файл jar, второй служит параметром.
Проблема в том, что сценарий занимает слишком много времени для обработки, и я хотел бы обойти ожидание, есть ли в любом случае это сделать (как огонь и забыть)? Сценарий записывает результаты в файл, и я могу проверять каждые 5 минут, есть ли файл там, но неудобно застревать в ожидании завершения процесса...
какие-либо предложения?
заранее спасибо
4 ответа
Я думаю, что это та же проблема
Асинхронная оболочка exec в PHP
Как отмечается в комментариях, вышесказанное работает только в среде *nix, но я обнаружил, что подобное для окон:
http://www.somacon.com/p395.php
Тем не менее, может быть, лучше подумать о других решениях, таких как отдельный процесс, который вы можете отправить на работу, которая не подключена к веб-серверу.
Веб-серверы иногда перерабатывают процессы, и фоновые процессы не всегда изолированы, насколько я читал, поэтому вы можете убить свой внешний процесс, если он не будет полностью отделен.
Я хотел бы добавить решение здесь также:
$shell = new COM("WScript.Shell");
$shell->run($command, 0, false);
работал как по волшебству:) спасибо много ircmaxell
Поскольку вы работаете в Windows и вам нужно запустить Java-программу, вы можете использовать javaw.exe вместо java.exe.
javaw на windows, предназначен для запуска jvm без открытия окна cmd. Может быть, это может помочь
На MSWindows попробуйте:
exec("start java -jar c:\edu.uniroma3.jar c:\parameter2BPassed");