#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. К сожалению, эти заголовки не всегда работают в определенных средах хостинга. Лучше убедитесь, что он не архивирует вашу страницу, прежде чем переходить к следующему варианту.