ob_flush не работает

#php #output-buffering

#php #вывод-буферизация

Вопрос:

Я искал по всем вопросам, я получил все ответы и предложения, но ни один из них мне не помог.

Он мой код:

 <?php

ini_alter("memory_limit", "1024M");
ini_set('display_errors', 0);
ini_set('implicit_flush', 'On'); //Inutil já que usa a funcao,, mas vamo testar
error_reporting(0);
set_time_limit(0);
ob_implicit_flush(true);
ob_end_clean();
while (ob_get_level())
    ob_end_flush();

ob_start();
for ($i = 0; $i < 5; $i  ) {
    echo $i . '<br>';
    ob_flush();
    flush();
    sleep(5);
}
echo ini_get('ob_implicit_flush');
die;
?>
  

И просто не работает.
Если я использую echo ob_get_level() через некоторое время, значение равно нулю.
В php.ini значение output_buffering отключено, а ob_implicit_flush включен

На моем рабочем столе (ubuntu, apache 2.2, php5.3) работает нормально. Но на моем сервере (centos, httpd 2.2, php5.2) не работает…

Есть идеи?

Ответ №1:

Ваши страницы php сжаты? Вы не можете очистить буферы записи, если вы сжимаете на сервере с помощью gzip.

Комментарии:

1. с помощью @apache_setenv(‘no-gzip’, 1); @ini_set(‘zlib.output_compression’, 0); по-прежнему не работает

2. К сожалению, эти заголовки не всегда работают в определенных средах хостинга. Лучше убедитесь, что он не архивирует вашу страницу, прежде чем переходить к следующему варианту.