PHP flush остановлен в IIS7.5

Мы использовали 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 сбрасывать данные?

7
задан Jeff Davis 24 August 2011 в 15:53
поделиться