Мы использовали php flush для «очистки» страницы сразу после ее нажатия, а также для отправки элементов навигации и основных компонентов страницы, чтобы страница появлялась почти мгновенно, хотя иногда содержание может занятьдолгое время загрузки.
Это работает очень хорошо.
Недавно мы обновили IIS 7.0 до 7.5, и теперь очистка не работает.При исследовании проблемы мы отключили сжатие статических и динамических файлов.Мы также отключили кэширование вывода.
У нас также отключено сжатие zlib и буферизация вывода в php.ini.
Чтобы протестировать проблему, у нас есть следующий скрипт
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
ob_start();
echo "starting...<br/>\n";
for($i = 0; $i < 5; $i++) {
print "$i<br/>\n";
ob_end_flush();
ob_flush();
flush();
ob_start();
sleep(2);
}
print "DONE!<br/>\n";
Браузерпросто показывает состояние загрузки (что бы ни было в любом браузере, в IE это выглядит как анимированный GIF-файл Ajax, в Firefox на вкладке будет указано «Соединение ...») в течение 10 секунд, а затем внезапно появляется весь вывод.
Мы пробовали различные комбинации flush и ob_flush и ob_end_flush на основе похожих вопросов на этом сайте.Никто из них не работает.Есть ли способ заставить IIS / PHP очищать данные?