Эта тема на forum.dklab.ru


Anonymous: Страница с ob_start и ob_gzhandler отправляется по частям
Скажите, это так и должно быть, что при использовании буферизации вместе с gzip сжатием (ob_start('ob_gzhandler', 9)) страница, если очень большая, отправляется по частям?
Т.е. при выполнении следующего скрипта сначала выводится часть страницы (та, что до слипа), а потом остальная:

<?php
ob_start('ob_gzhandler', 9);
?>
<div style="font-size: 1px;">
<?php
for($i = 0; $i < 6000; $i++)
print '0 ';


sleep(5);
?>
</div>
<br />
qwe

kernel32:
По-моему, пока основная программа не закончит работу, ob_start() ничего делать не будет. А для того, чтобы отправлять страницу клиенту по частям, нужно использовать специальные функции: flush(), а с использованием ob_start() надо и ob_end_flush()...
Maus:
Гость
Вы немного ошиблись: перед паузой Вам выводится не то, что до sleep(), а примерно 10000 знаков.
Возможно, это как-то связано с тем, что вы вызываете callback-функцию через каждые 9 байт.
Anonymous:

Вы немного ошиблись: перед паузой Вам выводится не то, что до sleep(), а примерно 10000 знаков.
Возможно, это как-то связано с тем, что вы вызываете callback-функцию через каждые 9 байт.

Спасибо. И вправду, вызвал просто ob_start('ob_gzhandler') и всё нормально заработало. Просто в книге Д.Котерова PHP5 было написано, что вызов ob_start('ob_gzhandler', 9) указывает, что бы использовался 9 уровень компрессии Gzip. Глянул в мануал по ob_start, а там вторым параметром значится то, о чём Вы говорили (chunk_size).
Скажите, а этот 9 уровень компрессии можно как-то включить при вызове ob_start('ob_gzhandler'). И ещё, если chunk_size задать и указать обработчик gzhandler, то получается, что сначала клиенту отправятся первые заархивированные chunk_size байт, затем вторые и т.д.? Т.е. gzip и в этом случае будет работать?

Эта тема на forum.dklab.ru