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");
Другие вопросы по тегам