2

PHPスクリプトがかなり長いwhileループを実行している間に、ブラウザにコンテンツを表示する方法を探していました... ob_start()flush()ob_flush()および ob_end_flush(). 失敗しました。

php.netで調査しているときに、次のようなユーザーの投稿に出くわしました。

「2012 年 8 月の時点で、すべてのブラウザはバッファリングに対して全か無かのアプローチを示しているようです。つまり、php が動作している間はコンテンツを表示できません。」

この投稿は、他のすべての投稿は無関係であると述べています。これが本当なら、PHP.net が必要な関数を非推奨として表示したのはなぜですか? そうでない場合は、単純なスクリプトの出力バッファリングを正しく実装する方法を教えてください。

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

simpleFunction(); 
4

1 に答える 1

0

Answer/Hack 提供: Joe Watkins

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(); 

ありがとう ;)

于 2013-11-01T13:13:50.333 に答える