register_shutdown_function и set_time_limit

Ventura

Новичок
register_shutdown_function и set_time_limit

Этот баг уже давно известен, но я до сих пор не пойму как мне от него избавиться. Дело в том что при наступлении таймаута пхп вызывает shutdown_function но на win32 платформе тут же вылетает второй Fatal Error на первой строчке этой функции и она не выполняется. Конф: win32/php 5.0.4. Скрипт вызывается из командной строки. Вот пример:

<?php

error_log ("Start\n", 3, "test.log");

function boo()
{
error_log ("Shutdown - function 'foo'\n", 3, "test.log");
}

register_shutdown_function("boo");

/* not necessary, just to show the error sooner */
set_time_limit(1);

/* infinite loop to simulate long processing */
for (;;) {}

error_log ("\nEnd\n", 3, "test.log");

?>

Вот ответ:

PHP Fatal error: Maximum execution time of 1 second exceeded in
c:\exp.php on line 16
PHP Fatal error: Maximum execution time of 1 second exceeded in
c:\exp.php on line 7

"test.log" contains only one "Start" line.

Что подскажите, гуру?

спасибо!
 

ZN

Новичок
так а в чём вы видите баг?
set_time_limit() - Set the number of seconds a script is allowed to run. If this is reached, the script returns a fatal error.

вот у вас fatal error и появляется
 

Ventura

Новичок
Он появляется два раза. А в документации сказано что эта функция выполнится полюбому. На Linux платформе у меня всё работает как сказано в документации - один Fatal и две записи в test.log
 

Ventura

Новичок
Небольшая поправка - в моём рабочем скрипте timeout происходит при вызове функции OCIExecute($stmt). И вот тогда получается два Fatal Error. Тестовый же скрипт на обоих платформах выполнился правильно.
 

Andreika

"PHP for nubies" reader
<offop>
блин... ну че за люди то... и не лень же писать какие-то тестовые скрипты, не соответствующие действительности, если в итоге все равно прийдется гадать что там у тебя понаписано
</offtop>
 

Ventura

Новичок
а я вот заметил, что когда нечего по теме сказать, начинают писать оффтоп :) Не сердитесь, каюсь, не проверил тестовый скрипт на win32 платформе, но может рано ещё меня ногами то пинать? :)
 
Сверху