register_shutdown_function() - неправильная функция %)

McOuni

Guest
register_shutdown_function() - неправильная функция %)

В скрипте есть объемная функция, которая требует долгого исполнения и дабы не утруждать пользователя глазеть на строку состояния браузера, пока она она будет исполняться решил заюзать register_shutdown_function().

Но визуально функция как будто исполняется одновременно с работой скрипта. Тоесть легкая страничка с записанной в ней в конце register_shutdown_function() начинает грузится ровно столько, сколько исполняется вся функция в shutdown.

А как заставить браузер вначале догрузить весь скрипт и только потом запустить на исполнение требуемую функцию заданную в shutdown?
 

McOuni

Guest
То же самое, не помогает. (ставил перед register_shutdown_function() )
Браузер все равно дожидается окончания выполнения зарегистрированной в shutdown функции.
Блииин, ну может есть другой способ а?
 

Кром

Новичок
Я бы посоветовал такие функции выполнять в отдельном iframe. а результаты передавать в родительское окно.
 

McOuni

Guest
А как-нибудь по программски %) через другие ПХП функции можно это организовать?

-~{}~ 17.02.05 03:34:

а то как-то по-детски грузить фреймы и картинки с адресом на скрипт, вместо того, чтобы просто организовать полноценную функцию, которая бы организованно выполняла все подобные действия
 

svetasmirnova

маленький монстрик
Я ООП везде использую и PHP5. Поэтому все подобные проблемы я решаю в деструкторе и применяю функцию [m]ignore_user_abort[/m] Хотя ничто не мешает использовать её в функции, зарегистрированной для выполнения по завершению работы скрипта.

Она никаких коннектов сама не прерывает, но я думаю, что это не страшно, хотя и не обеспечивает желаемой красоты.
 

Screjet

Новичок
А никак. Подход к проблеме в корне не верный. И shutdown-ф-ция не для этого. И браузеры все отображают как хотят.
Я уже както описывал решение такой проблемы, чудовищно упрощая: работает два скрипта: 1-й выполняет полезную работу, 2-й опрашивает состояние первого и отсылает в браузер.
 

tristram

Guest
1. можно инфу схватить через ob-подобные функции, а потом сказать броузеру мол content-lenght=strlen($content), ну и естественно echo $content; таким образом броузер отключится.
2. еще можно сделать system("script.php > /dev/null &") после вывода инфы таким образом выполнение script.php пойдет в отдельный поток.
 
Сверху