ホームページ > バックエンド開発 > PHPチュートリアル > PHPで結果を即座にブラウザに出力する方法

PHPで結果を即座にブラウザに出力する方法

PHPz
リリース: 2020-09-05 09:17:05
オリジナル
3209 人が閲覧しました

PHP が結果をブラウザーに即座に出力する方法: ob_flush() 関数とフラッシュ() 関数を使用してブラウザーにキャッシュを強制的に更新することで、結果をブラウザーに即座に出力できます。

PHPで結果を即座にブラウザに出力する方法

次のコードを実行します:

<?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(&#39;output_buffering&#39;);
echo str_repeat(&#39; &#39;,$buffer+1);     //防止浏览器缓存
ob_end_flush();     //关闭缓存
for( $i=1; $i<=10; $i++ ){
    echo &#39;第 &#39;.$i.&#39; 次输出.&#39;."<br />\n";
flush(); //刷新缓存(直接发送到浏览器)
    sleep(1);
}
echo &#39;输出完毕!&#39;;
ログイン後にコピー

関連知識の詳細については、PHP 中国語 Web サイト をご覧ください。 !

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート