Можно ли по-прежнему использовать буферизацию вывода, если да, то как?


Я искал способ отображения контента в браузере, в то время как php-скрипт выполняет довольно длительный цикл... используя ob_start(), flush(), ob_flush() и ob_end_flush(). Это не удалось.

Во время исследования php.net Я наткнулся на сообщение пользователя, которое гласило:

"По состоянию на август 2012 года все браузеры, похоже, демонстрируют подход "все или ничего" к буферизации. Другими словами, пока php работает, никакой контент не может быть показан"

.

Далее в сообщении говорится, что все остальные сообщения не имеют отношения к делу. Если это правда, то почему имеет PHP.net отображаются необходимые функции как устаревшие? И если это не так, может ли кто-нибудь порадовать меня, как правильно реализовать буферизацию вывода для простого скрипта:

function simpleFunction() {
    for ($i = 0; $i < 10000; $i++) {
        $data = $externalJsondata;
        if($data == "True")
        {
        echo ("Output1");
        }
        else{
        echo ("Output2");           
        };
    };   
}

simpleFunction(); 
Author: halfer, 2013-11-01

1 answers

Ответ/Взлом предоставлен: Джо Уоткинсом

function simpleFunction() {
if (!defined('STDOUT'))define('STDOUT', fopen("php://stdout", "w"));
    for ($i = 0; $i < 10000; $i++) {
        $data = $externalJsondata;
        if($data == "True")
        {
        echo ("Output1");
        flush(STDOUT);
        }
        else{
        echo ("Output2");
        flush(STDOUT);        
        };
    };   
}

simpleFunction(); 

Спасибо;)

 0
Author: Community, 2017-05-23 12:21:33