понимание flush, Ob_flush и buffer_output в PHP - PullRequest
1 голос
/ 25 октября 2011

Я читал о буферизации содержимого и нашел простой скрипт для отображения эффектов сброса

<?php

if (ob_get_level() == 0) ob_start();

for ($i = 0; $i < 10; $i++) {

    echo "<br> Line to show.";
    echo str_pad('', 4096) . "\n";

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

?>

этот скрипт работает нормально и показывает вывод, но когда я удаляю str_pad или уменьшаю длину с 4096 до 40, сброс не работает.

Кто-нибудь может мне помочь, что именно вызывает это ..

Ответы [ 2 ]

1 голос
/ 28 февраля 2013

По крайней мере, я нашел причину.

Согласно PHP.net Броузерам требуются определенные байты для запуска отображения страницы.Как и в некоторых версиях Internet Explorer требуется 200 байт.А современным браузерам, таким как Firefox или Chrome, требуется больше байтов для запуска отображения в браузере.

В вышеупомянутом случае, если вы отметите его в Internet Explorer, для него не потребуется заполнение строк, но в Firefox или Chrome вам нужно заполнить пробелы с помощью ввода вДисплей с промывкой на выходе.

0 голосов
/ 25 октября 2011

Я распознаю эту проблему, однажды она была у меня сама ... У вас активировано выходное сжатие?

...