set_time_limit и ignore_user_abort
Вот такой скрипт:
Код:
<?php
$value=ignore_user_abort(true);
print "ignore_user_abort value=".$value."<br>";
print "before set_time_limit max_execution_time : ".ini_get("max_execution_time")."<br>";
set_time_limit(0);
print "after set_time_limit max_execution_time : ".ini_get("max_execution_time")."<br>";
flush();
do{
$fw=fopen("/tmp/test.log","ab");
fputs($fw,date("r")."\n");
fclose($fw);
print date("r")."<br>";
flush();
sleep(2);
} while(true);
?>
$value=ignore_user_abort(true);
print "ignore_user_abort value=".$value."<br>";
print "before set_time_limit max_execution_time : ".ini_get("max_execution_time")."<br>";
set_time_limit(0);
print "after set_time_limit max_execution_time : ".ini_get("max_execution_time")."<br>";
flush();
do{
$fw=fopen("/tmp/test.log","ab");
fputs($fw,date("r")."\n");
fclose($fw);
print date("r")."<br>";
flush();
sleep(2);
} while(true);
?>
Свой сервер:
Функции set_time_limit и ignore_user_abort работают. max_executuion_time становится в ноль, скрипт работает даже после того как окно браузера закрыто.
Но вот беда - скрипт обрубается ровно через 2 минуты. Apache не перезагружается. Жаль :( Где еще покрутить ?
ValueHost:
Функции set_time_limit и ignore_user_abort работают. max_executuion_time НЕ становится в ноль, как было 30 так и остается. скрипт работает даже после того как окно браузера закрыто.
Но вот беда - скрипт обрубается ровно через две минуты. Apache не перезагружается. Жаль :( Где еще покрутить ? Внимание, при max_executuion_time==30, скрипт отрабатывает те-же 2 минуты.
В общем одни непонятнки. Может еще кто потестирует ?
Запустил эту беду на ht-systems. Ничего не вырубилось, в test.log ничего не записалось. Индикатор браузера стоял почти час на месте, пока я его не абортнул escape'ом. Теперь, видимо, придётся звонить хостёру с просьбой убить процесс.... :)
На сколько я знаю, что 0 в set_time_limit === бесконечность. В while постоянно true...