Задержка браузера при выполнении скриптов

Messiah

Новичок
Задержка браузера при выполнении скриптов

Сложно было придумать заголовок для этой темы. Возможно он не характеризирует то, чего я хочу, но по-другому не знаю как назвать :)
К делу.

Сразу приведу код:
PHP:
<?
for ($i = 0; $i < 5; $i++)
{
   sleep(1);
   print "hello<br>";
}
?>
Функция sleep() здесь приведена только для того, чтоб имитировать работу.
Проблема в том, что браузер не выводит строки hello последовательно. Он ждёт пока загрузится полностью вся страница и выведет сразу 3 слова hello.
Можно ли как-то сделать, чтоб браузер выводил последовательно эти слова?
Я пересмотрел весь manual по php, но не нашёл ничего для решения этого вопроса.
 

Messiah

Новичок
Я перепробовал все функции output buffering! Ничего не помогает...
В php.ini стоит output_buffering = On.

"flush() has no effect on the buffering scheme of your webserver or the browser on the client side. Thus you need to call both ob_flush() and flush() to flush the output buffers."

Так я тоже пробовал. Не получается.

"Some versions of Microsoft Internet Explorer will only start to display the page after they have received 256 bytes of output, so you may need to send extra whitespace before flushing to get those browsers to display the page. "

Проверил... поставил вместо print "hello<br>" - print str_repeat "("hello",10000)" и всё равно оно показывает только когда полностью загрузится страница.
 

DiMA

php.spb.ru
Команда форума
1. output_buffering = Off

2. в начале страницы:
echo str_repeat("<!-- ---- -->",50);
flush();

3. в твоем цикле - flush()
 

Messiah

Новичок
Спасибо за ответ, но я уже сам нашёл решение.
При этом у меня output_buffering = On
PHP:
<?
ob_end_flush();
for ($i = 0; $i < 5; $i++)
{
     sleep(1);
     print str_repeat ("c",300);
     print "<br>";
     flush();
}
?>
 

DiTHER

bang bang
чудо у перьях :))
русской документации по PHP счас навалом. Залез бы глянул что такое ob_end_flush. И не написал бы глупую вещицу "при этом у меня output_buffering = On".. rtfm
 
Сверху