|
|
|
| Всем привет!
Мне надо запустить скрипт, который будет долго выполняться из другого скрипта.
Я пробовал exec, system, fopen, но всё они ждут результата выполнения.
Можно как-то запустить скрипт или послать ему запрос на выполнение, например при помощи сокетов или функции header, чтобы родительский скрипт продолжил выполняться, и новый запустился.
Вариант с pcntl и fork тоже не подходит, т.к. их на серваке нету. | |
|
|
|
|
|
|
|
для: Trivium
(29.01.2010 в 17:58)
| | Неа, затёр...
То есть способ такой: получить только заголовки при GET/POST запросе скрипта, а потом оборвать соединение. В запрашиваемом скрипте либо отсутствие вывода, либо ignore_user_abort(true). Но способ тупой.
Скорее всего, тебе просто нужен cron. | |
|
|
|
|
|
|
|
для: Тень
(29.01.2010 в 18:06)
| | Нет, крон не надо. Мне надо блог в поисковиках пинговать. Там большая база и надо разослать всем хостам, а они там ответа заставляют ждать и долго в общем это. Надо как-то отправить запрос и не ждать ответа моему скрипту. | |
|
|
|
|
|
|
|
для: Trivium
(29.01.2010 в 17:58)
| | так как кто-нибудь знает как можно такое реализовать?
ну должны ж быть в PHP средства для хоть какой-то многопоточности и многозадачности кроме cURL'а и pcntl fork'а... | |
|
|
|
|
|
|
|
для: Trivium
(29.01.2010 в 17:58)
| | Для подобной цели я использую Аякс, а результат пишу в файлы. | |
|
|
|
|
|
|
|
для: Владимир55
(31.01.2010 в 13:35)
| | ну я тоже это как один из вариантов рассматриваю, но а всё таки средствами PHP как такое сделать?
я вроде прочитал можно с ignore_user_abort реализовать это | |
|
|
|
|
|
|
|
для: Trivium
(01.02.2010 в 10:15)
| | С этим оператором я не знаком. И вообще, как мне кажется, для рнр эта задача не свойственна.
А еще можно запустить рнр-скрипт, вызвав его файл так, как если бы это была картинка. Типа src="123.php". | |
|
|
|
|
|
|
|
для: Владимир55
(01.02.2010 в 12:36)
| | ну я знаю, не свойственна да, но как-то бы без картинок и AJAX'а можно ещё как-то? просто как-то отправить запрос серваку, но не ждать ответа? а сервак будет себе выполнять в фоне указанный скрипт | |
|
|
|
|
|
|
|
для: Trivium
(01.02.2010 в 13:41)
| | через popen пробывал ? | |
|
|
|
|
|
|
|
для: guye
(01.02.2010 в 15:20)
| | посмотрел в мануале, это вроде процесс открывает только? как ей запустить скрипт? | |
|
|
|
|
|
|
|
для: Trivium
(01.02.2010 в 15:27)
| | я думал сделать что типа такого:
<?php
echo date('h:i:s')."\n";
$p=popen('php proba.php','r');
echo date('h:i:s')."\n";//дата будет меньше чем у дочернего процесса
exit;
//pclose($p);
echo date('h:i:s')."\n";
?>
proba.php:
<?php
$content='';
$f=fopen('file','w');
for($i=0;$i<1000000;$i++){
fwrite($f,$content,strlen($content));
}
fwrite($f,date('h:i:s'));
fclose($f);
?>
но родительский процесс все равно ждет завершения дочернего процесса (но если тебе нужно породить несколько процесов одновременно должно прокатить) | |
|
|
|
|
|
|
|
для: guye
(01.02.2010 в 15:47)
| | не, мне надо как раз именно не ждать выполнения... и popen он же целый процесс стартует, а это сервак грузит сильно | |
|
|
|
|
|
|
|
для: Trivium
(01.02.2010 в 13:41)
| | Я так и делаю, как Вам написал: директива на сервер уходит и процесс осуществляется своим чередом.
Что Вас не устраивает, какую цель Вы преследуете? | |
|
|
|
|
|
|
|
для: Владимир55
(01.02.2010 в 15:55)
| | я преследую цель запустить выполнение скрипта и не ждать когда он выполнится | |
|
|
|
|
|
|
|
для: Trivium
(01.02.2010 в 16:27)
| | Аякс так и делает. Чем Вас это не устраивает. | |
|
|
|
|
|
|
|
для: Владимир55
(01.02.2010 в 17:29)
| | ну наверно так и сделаю... вставку на jQuery... просто хотелось на чистом PHP сделать, я думал есть средства... может в будущих версиях введут шо нить "эдакое" | |
|
|
|
|
|
|
|
для: Trivium
(29.01.2010 в 17:58)
| | exec('php script.php>/dev/null &'); | |
|
|
|
|
|
|
|
для: Shorr Kan
(01.02.2010 в 15:50)
| | exec дожидаеться выполнения системной команды popen порождает отдельный процесс(замени popen на exec в моем скрипте и посмотри на разницу во времени) | |
|
|
|
|
|
|
|
для: guye
(01.02.2010 в 15:55)
| | & на конце как раз и призван решить эту проблему | |
|
|
|
|
|
|
|
для: Trivium
(29.01.2010 в 17:58)
| | мне тут посоветовали сделать echo >>> EOF
только я не понять зачем оно надо? это ж для чтения вроде? | |
|
|
|