echo в цикле

fake

Новичок
PHP:
for ($i = 1; $i < 10000; $i++)
{
    echo $i;
}
браузер выводит сразу все echo после того как цикл прошел. как заставить выводить после каждого прохода?
 

fake

Новичок
вместо echo делаю
PHP:
    function display_message($str)
    {
        ob_start();
        echo $str;
        ob_end_flush();
    }
не помогает
 

fake

Новичок
идет обработка документов минут на 5, надо выводить статус. пока цикл не закончится - браузер чист. в консоли все норм работает.
 

A1x

Новичок
всегда делал так в таких случаях

PHP:
echo '...'; ob_flush(); flush();
(ob_start не нужен)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
1. задержка отрисовки - нормальное поведение браузеров для уменьшения нагрузки на CPU
в Fx лечится выставлением настроек, в IE - передачей 4 кб комментариев перед текстом, про остальные не знаю
выведи в консоль, увидишь real-time

2. проверь значение output_buffering в phpinfo()

3. проверь, не буферизуется ли ответ веб-сервером (nginx, кажется, такое может делать)
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
вместо echo делаю
PHP:
    function display_message($str)
    {
        ob_start();
        echo $str;
        ob_end_flush();
    }
не помогает
ob_start не надо
ob_end_flush - один раз перед циклом - эта комманда убирает буфферинг и выплевывает все что в буфере на данный момент.
Для браузеров надо добавить пробелов какое-то количество, чтобы они не кешировали у себя. Ну, и еще flush надо делать, да.
 
Сверху