PDA

Просмотр полной версии : [PHP] Выполнение коменды с немедленным возвратом управления


Kuzya
29.12.2009, 22:47
Здравствуйте. Мне понадобилось сделать следующее.
Есть определённая команда, которая выполняется 3 минуты. Мне нужно как-то эту команду вызвать в командной строке через PHP. При этом управление должно моментально возвращаться к интерпритатору, не дожидаясь окончания работы самой команды. На данный момент пробовал 2 функции - exec(команда) и system(команда).
Они обе ждут пока команда полностью отработает, и лишь потом скрипт идёт дальше. Подскажите пожалуйста, как быть?

Kaimi
29.12.2009, 22:52
мб proc_open

Kuzya
30.12.2009, 15:07
Так и не разобрался с ним =( Ну да ладно, нашёл другой выход. Просто вызываю запуск AJAX-ом и пользователь не видит то что команда выполняется долго =)

Deathdreams
30.12.2009, 15:27
Kuzya
Скинь решение проблемы, не будь единоличником :)

krypt3r
30.12.2009, 15:28
Не знаю, как под виндой будет работать

<?php
$pid = pcntl_fork ();
if ($pid == -1)
die ("fork error\n");
elseif ($pid) {
//pcntl_wait ($status);
} else {
exec ('ping -c10 mail.ru > /tmp/111.111 2>&1');
}
echo "Exiting\n";
?>

Результат - зомби-процесс в никсах )

Nightmarе
30.12.2009, 16:10
так php же не многопоточный. Всё делается в одном потоке, и переключить команду в один поток и прожолжить выполнение... ну хз скорее навряд ли.

Kuzya
31.12.2009, 08:40
Deathdreams, зачем "скидывать решение"? Я же описал как всё сделал. Просто есть скрипт который запускает нужную мне команду, и обращаюсь я к нему с отдельной странички не GET-методом (как до этого), а AJAX-ом. Скрипт может хоть час выполняться - клиент этого не заметит. После AJAX-обращения он просто видит надпись "*** запущен" и работает дальше. Всё просто =)