Мы использовали 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 на вкладке будет отображаться «Connecting ...») в течение 10 секунд, а затем внезапно появляется весь вывод.
Мы пробовали различные комбинации flush и ob_flush и ob_end_flush на основании аналогичных вопросов на этом сайте. Ни один из них не работает. Есть ли способ заставить IIS / PHP сбрасывать данные?