PHP exec (), я могу запустить и забыть? - PullRequest
2 голосов
/ 08 февраля 2011

Я пытался выполнить Java-приложение с помощью php-формы .. поэтому кнопка submit запускает команду execute:

exec("java -jar c:\edu.uniroma3.jar c:\parameter2BPassed");

Первый путь определяет, где находится файл jar, второй служиткак параметр.

Проблема в том, что сценарий занимает слишком много времени для обработки, и я хотел бы обойти ожидание, есть ли в любом случае это сделать (как пожар и забыть)?Сценарий записывает результаты в файл, и я могу проверять каждые 5 минут, есть ли файл там, но неудобно застревать в ожидании завершения процесса ...

есть предложения?

заранее спасибо

Ответы [ 4 ]

1 голос
/ 08 февраля 2011

Я думаю, что это та же самая проблема

Асинхронная оболочка exec в PHP

Как отмечают комментарии, вышеприведенное работает только в среде * nix, но я нашел аналогэто для windows:

http://www.somacon.com/p395.php

Тем не менее, может быть лучше подумать о других решениях, таких как отдельный процесс, в который вы можете отправлять работу, которая не подключена к веб-серверу.

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

0 голосов
/ 08 февраля 2011

Поскольку вы работаете в Windows и вам нужно запустить программу Java, вы можете использовать javaw.exe вместо java.exe.

javaw в Windows, предназначен для запуска jvm без открытия cmdокно.Может быть, это может помочь

0 голосов
/ 08 февраля 2011

Я хотел бы добавить решение здесь также:
$shell = new COM("WScript.Shell");<br> $shell->run($command, 0, false);
работал как по волшебству :) thx alot ircmaxell

0 голосов
/ 08 февраля 2011

В MSWindows попробуйте:

exec("start java -jar c:\edu.uniroma3.jar c:\parameter2BPassed");
...