-2

ob_start 機能のテスト グラウンドとして、次のクレイジーなスニペットがあります。

ob_start();
for ($i = 1; $i <= 100000000; $i++) {       
    echo '<li>',$i, ' ',date("H:i:s");
    ob_flush();
}

画面に何かが表示されるまで数分待ちます。数分間、ブラウザのタイトルに「読み込み中...」というメッセージが表示された状態メッセージ「www.myserver.com を待機中」が表示された空白のページを見ました。

まさにこの動作を防ぐためにob_flushではありませんか?

上記のスニペットを実行すると、ブラウザにテキストがすぐに表示されるようにするには、どうすればよいでしょうか?

4

1 に答える 1

1

行を追加する

flush();

直後

    ob_flush();

トリックを行います。ブラウザは入力を即座に表示し、ブラウザまたはスクリプトにダンプされたものがすべてタイムアウトするまでストリーミングテキストを取得します。

このスニペットを試さないでください。多くの帯域幅が無駄になります。

ob_flushの後にflush()を追加すると、それが実現する理由を知っている人はいますか?

注意:ob_flush()なしのflush()だけ、またはflush()なしのob_flush()だけは機能しません。

于 2012-08-13T08:18:10.283 に答える