Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мониторинг работы скрипта (вывод сообщений до его завершения)
 
 автор: ДацкыйКот   (19.05.2008 в 03:26)   письмо автору
 
 

Ситуация: определенные скрипты ведут обработку в циклах или в итерациях. Зачастую эта обработка является длительной и необходимо отслеживать, на каком этапе находится обработка.
Попытки вывода сообщений не дают должного результата - сервер выдает сразу все сообщения после окончания работы скрипта. Поэтому приходится при явных итерациях запускать цикл таким образом, чтобы скрипт делал редирект на себя. В этом случае всегда выводится своевременная информация мониторинга.
Но такую возможостость обеспечить в каждом цикле нельзя.

Есть ли в PHP команды или способы, вынуждающие сервер послать клиенту информацию до окончания работы скрипта?

   
 
 автор: Poison   (19.05.2008 в 09:11)   письмо автору
 
   для: ДацкыйКот   (19.05.2008 в 03:26)
 

flush() ?

   
 
 автор: Poison   (19.05.2008 в 09:12)   письмо автору
 
   для: ДацкыйКот   (19.05.2008 в 03:26)
 

Да, может запускать скрипты без участия сервера?

   
 
 автор: ДацкыйКот   (19.05.2008 в 16:24)   письмо автору
 
   для: Poison   (19.05.2008 в 09:12)
 

попробовал позапускать flush, ob_flush.. не работает (( не очень догоняю почему.. хотя по идее вот тут http://www.phpclub.net/manrus/f/flush.html
говорят, что апач все равно все буферит до окончания работы скрипта. так же поступают и браузеры.. так что не смог их преодолеть..
есть еще опция в php.ini, которая стоит в off, но ее включение не рекомендуется - пишут что возможны серьезные проблемы с производительностью в дальнейшем..

а как можно запустить скрипт без участия сервера? %( я так понимаю что апач с пхпэшным расширением обрабатывает пхп скрипт и генерит ответ браузеру... есть какая-то другая схема что ли?

   
 
 автор: mihdan   (19.05.2008 в 16:58)   письмо автору
 
   для: ДацкыйКот   (19.05.2008 в 03:26)
 

firefox + flush()

Вот пример:


<?
for ($i 0$i 10000$i ++) {
   
flush();
   echo 
$i.'<br />';
   
flush();
}
?>

   
 
 автор: ДацкыйКот   (19.05.2008 в 17:09)   письмо автору
 
   для: mihdan   (19.05.2008 в 16:58)
 

.

   
 
 автор: ДацкыйКот   (19.05.2008 в 17:09)   письмо автору
 
   для: mihdan   (19.05.2008 в 16:58)
 

крута... спасибо...

в Опере тоже все отрабатыывается... в ИЕ - нет.

я правда слегка модифицировал, чтобы больше были паузы между циклами:
for ($i = 0; $i < 10; $i ++) { 
   flush(); 
   usleep(300000);
   echo $i.'<br />'; 
   flush(); 

   
 
 автор: mihdan   (19.05.2008 в 17:40)   письмо автору
 
   для: ДацкыйКот   (19.05.2008 в 03:26)
 

в php.ini


implicit_flush = On
output_buffering = On

   
 
 автор: ДацкыйКот   (20.05.2008 в 10:43)   письмо автору
 
   для: mihdan   (19.05.2008 в 17:40)
 

а этот комментарий перед директивой implicit_flush вас не насторожил?

;Turning this option on has serious performance implications and is generally recommended for debugging purposes only.
implicit_flush = Off

   
 
 автор: mihdan   (20.05.2008 в 14:39)   письмо автору
 
   для: ДацкыйКот   (20.05.2008 в 10:43)
 

Нет не насторожило - http://www.php.su/functions/?cat=outcontrol

   
 
 автор: ДацкыйКот   (21.05.2008 в 06:24)   письмо автору
 
   для: mihdan   (20.05.2008 в 14:39)
 

хм.. и где же там аргументы в пользу оправданности таких настроек? там лишь дословный перевод камента из php.ini: "При использовании PHP в пределах среды сети, включение этой опции влечет за собой уменьшение производительности, и вообще данная опция рекомендуется только для отладки."

поскольку локалхост обычно перегружен обработками и загрузками, пока принял решение выводить сообщения в течение работы скрипта явным вызовом функции flush в ограниченном количестве случаев..

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования