Как запустить скрипт на сервере без ожидания результата?

colver

Новичок
Как запустить скрипт на сервере без ожидания результата?

Необходимо запустить внешнюю прогрумму из php в фоновом режиме без ожидания результата. Дело в том, что программа выполняется несколько минут, нельзя пользователя заставлять ждать так долго.
PHP:
exec("путь к программе &"); //не помогает
В принципе, если закрыть окно, то программа продолжает выполнение, однако закрывать окно документа не есть хорошо.
 

colver

Новичок
system() не помогла. Нашел такое решение проблемы
PHP:
$descriptorspec = array( array("file","/dev/null", "w"));
$query_par = "путь к программе &";
$process = proc_open($query_par, $descriptorspec, $pipes);
proc_close($process);
 

lart

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

А если есть свой сервак где можно подправить конфиг php то можно использовать и первый и второй вариант.

P.S. Провайдеров ругать не стоит, так-как у ник куча скриптов от разных пользователей, за всему уследишь, а при помощи дочерних процессов мяжно организовывать спам-рассылки, сканировать сайты и т.д.
А если запретить пользователям создавать дочерние процессы то apache вырубит скрипт через определенное количество времени (в зависимости от настроек).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
lart
а как запретить создавать дочерние процессы из php?
 

becool

Новичок
извращенцам можно запускать файл через file_get_contents :D
вот ещё тут стоит глянуть - http://www.php.net/ignore_user_abort
 

colver

Новичок
Marquis, планировщики не катят, т.к. скрипт надо запускать в зависимости от действия пользователя.
 
Сверху