PHP が結果をブラウザーに即座に出力する方法: ob_flush() 関数とフラッシュ() 関数を使用してブラウザーにキャッシュを強制的に更新することで、結果をブラウザーに即座に出力できます。
次のコードを実行します:
<?php for ( $i = 0 ; $i < 10 ; $i ++ ) { echo $i ; sleep ( 1 ) ; } ?>
上記と同様のプログラムが PHP インタープリターで実行されると、数値が表示されます。想像どおりに毎秒出力されます。ただし、ブラウザを使用してアクセスする場合は状況が異なります。ブラウザでアクセスすると、10 秒後にすべての結果が一度に表示されます。
では、PHP はどのようにして結果を即座にブラウザーに出力するのでしょうか?
ob_flush() と flash() を使用して、ブラウザにキャッシュを強制的に更新できます。プログラムは次のように変更されます。
<?php for ( $i = 0 ; $i < 10 ; $i ++ ) { echo $i ; ob_flush ( ) ; flush ( ) ; sleep ( 1 ) ; } ?>
その後、ブラウザを使用します。アクセスするには、4 つのビューを使用します。ブラウザの中で結果をすぐに出力できるのは Firefox だけです。これは、ブラウザによってバッファリングの処理方法が異なるためです。Firefox はキャッシュの強制更新を要求された場合に非常に従順ですが、IE はコンテンツをインターフェイスにすぐに表示する前に 256 バイトを受信する必要があり、Safari は 1024 バイトを必要とします。Opera はよりパーソナライズされており、 HTML タグに遭遇した場合にのみ即座に出力します (Safari にも同じことが当てはまります)。
IE および Safari の場合、結果を出力する前に、制限された数を超える空白文字を出力できます。
<?php echo str_repeat ( " " , 1024 ) ; for ( $i = 0 ; $i < 10 ; $i ++ ) { echo $i ; ob_flush ( ) ; flush ( ) ; sleep ( 1 ) ; } ?>
Opera および Safari の場合、HTML タグに遭遇するとすぐに出力されます。 、通常、プレーンテキストコンテンツをブラウザに出力するだけではないため、考慮する必要はありません。上記のプログラムの場合、出力結果に HTML タグを追加することで目的を達成できます。
<?php echo str_repeat ( " " , 1024 ) ; for ( $i = 0 ; $i < 10 ; $i ++ ) { echo $i . "<br>" ; ob_flush ( ) ; flush ( ) ; sleep ( 1 ) ; } ?>
この時点で、PHP 実行結果のリアルタイム出力の効果がさまざまなブラウザーに表示されます。実際の作業では、別の目的があるかもしれませんが、同様の効果が必要な場合は、必要に応じて対応する変更を加えるだけで済みます。
上記の方法に加えて、PHP では出力バッファリングを使用して出力コンテンツをキャッシュすることも可能ですが、テスト後も上記の方法は引き続き正常に機能します。
$buffer = ini_get('output_buffering'); echo str_repeat(' ',$buffer+1); //防止浏览器缓存 ob_end_flush(); //关闭缓存 for( $i=1; $i<=10; $i++ ){ echo '第 '.$i.' 次输出.'."<br />\n"; flush(); //刷新缓存(直接发送到浏览器) sleep(1); } echo '输出完毕!';
関連知識の詳細については、PHP 中国語 Web サイト をご覧ください。 !