flush() и Internet Explorer 7.0

sitecreator

Новичок
flush() и Internet Explorer 7.0

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title>flush() test</title>
</head><body>
<!--256 bytes for IE----------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------->
<?php
for ($i=0; $i<10; $i++) {
    echo "<p>", date('h:i:s'), "</p>\n";
    flush(); 
    sleep(1);
}
?>
</body></html>
В браузерах IE 6.0, FireFox 2, Opera 9 выдает каждую секунду по одной строчке, как и задумывалось.
Internet Explorer 7.0 выдает информацию на экран только после полной загрузки страницы.
Аналогично ведет себя Safari 2 / 3).
Как заставить IE 7.0 выводить информацию на экран по мере ее поступления от сервера?

пример здесь
 

sitecreator

Новичок
dimagolov , реальный скрипт работает от 1 до нескольких секунд и может выдавать информацию браузеру порциями.

1) пользователь видит, что скрипт не висит.
2) пользователь сразу же получает часть интересующей его информации и сразу же может анализировать ее и делать определенные выводы, а не ждать несколько секунд.
 

baev

‹°°¬•
Команда форума
sitecreator, у меня в IE7 Ваша тестовая страница вроде работает нормально: таймстемпы выводятся посекундно.
Может Вам кэш браузера почистить?..
 

sitecreator

Новичок
baev, верно, работает в IE7. Просто у меня основной браузер - это IE6, а IE7 запускал на виртуальной машине VMware. Видимо VMware как то по своему кеширует данные не зависимо от браузера.

Не работает только в Safari. Но, учитывая его слабую распространенность, то это не страшно.

Спасибо.
 

Farsh

~ on ~ high ~ wave ~
Не хотелось создавать новую тему , поэтому отпишу тут .
Тот пример , тот что в первом посте , отлично работает .
У меня есть мною написанный парсер поисковиков .
Он сначала читает данные с textarea , делает из них массив ,
выводит верхушку таблицы , потом через for пробегается по этому массиву , и рисует конец таблицы.
В этом цикле for он берет первый элемент массмва, проходит по 4 поисковикам и определяет позицию сайта по значению этого элемента ( запрос ) , и рисует строку в таблице .
Так вот мне хотелось бы , чтоб как только один запрос пропарсится , выводилась одна строка таблицы . Как только второй запрос - вторая строка , и так далее.
По смысле все идентично тому примеру , что в первом посте .
Но как ни крути , у меня все равно если что-то выводится , то только все вместе .
в php.ini output buffers off
256 байт уж точно есть .
В чем может быть проблема ?
 

das6745

Новичок
ob_flush + flush не помогает?

ps: и всетаки, флаш немного увеличивает время выполения. с флашем(около 10 вызовов) 1,8-2с, без - .5 - 1.2с
 

dimagolov

Новичок
Farsh, das6745
проблема в том, что спецификация таблиц в html такова, что броузер не может отображать ее частями, только имея всю таблицу загруженной.

выход - резать таблицу на много по несколько строк без промежутков....
 

Farsh

~ on ~ high ~ wave ~
Автор оригинала: dimagolov
Farsh, das6745
проблема в том, что спецификация таблиц в html такова, что броузер не может отображать ее частями, только имея всю таблицу загруженной.

выход - резать таблицу на много по несколько строк без промежутков....
Блин , большое тебе спасибо , заработало :)
Респект :cool:
 

baev

‹°°¬•
Команда форума
спецификация таблиц в html такова
— насколько знаю, это всего лишь особенности рендеринга HTML конкретными браузерами.

Firefox, например, выводит построчно.
 

Farsh

~ on ~ high ~ wave ~
Снова заглянул в эту темку .
У меня назрел вопрос .
Есть форма.
При ее сабмите исполняются определенные действия , потом начинается загрузка файлов . До момента загрузки файлов у меня не отображается в браузере то , что я отдаю флюшем .
А просто типо грузится скрипт .
А потом , как начинается закачка , сразу все что набуферизовалось - выводит .
Что можно сделать?
 

Pigmeich

Новичок
мама...


А потом , как начинается закачка , сразу все что набуферизовалось - выводит .
Что можно сделать?
У IE есть прикольная особенность, он начинает отображать только после некоторого колличества информации - вроде килобайт, но точнее не скажу. Соответсвенно вывести пробелы.
 

A1x

Новичок
ставьте ob_flush() перед flush() - проблема решается (уже спрашивали такое)
 

golova2

Новичок
и снова ап)))

тема снова актуальна)))

приведенный пример в посте номер один у меня не работает ни в IE7 ни в последнем FireFox
у себя ob_flush() тоже не помогает

хелп ми, плиз.....
может можно это как то на ajax сделать?
 
Сверху