PHP:flush() と ob_flush()、ob_end_flush() の使用法の違いの詳細な説明

伊谢尔伦
リリース: 2023-03-11 10:14:01
オリジナル
3670 人が閲覧しました

まず最初に、バッファーについて説明します。これは 4096 (1kb) のメモリ アドレス空間です。PHP には php.ini 設定ファイルで、output_buffering の設定が含まれています。が実行されると、すぐには出力されませんが、バッファーにエコー/印刷コンテンツを出力したい場合、データはシステム カーネルに渡され、表示のためにブラウザーに tcp に渡されます。 phpのphpのoutput_bufferingメカニズムがオンになっている場合(デフォルトはオンになっていますが、ob_start()関数を通じてオンにした後でも可能です)、phpバッファ内のデータが設定値に達した場合にのみ、バッファ内のデータはブラウザに送信されます。ただし、ブラウジングの一部のバージョンでは、データが 256 バイトに達した場合にのみコンテンツを出力します。 関数形式 void ob_start(void)
説明: バッファーがアクティブ化されると、すべてのコンテンツが出力されます。 PHP プログラムからの -file ヘッダー情報は送信されませんが、内部バッファーに保存されます。バッファの内容を出力するには、
ob_end_flush
() または flash() を使用してバッファの内容を出力します。 flush: バッファーと出力の内容を更新します。

関数の形式: flash()

説明: この関数は頻繁に使用され、非常に効率的です。

ob_g​​et_contents

: 内部バッファの内容を返します。 関数の形式: string ob_get_contents(void) 説明: この関数は、出力バッファーがアクティブ化されていない場合、FALSE を返します。

ob_g​​et_length

: 内部バッファーの長さを返します。 関数の形式: int ob_get_length(void) 説明: この関数は、ob_get_contents と同様に、現在のバッファーの長さを返します。出力バッファーがアクティブ化されていない場合は、FALSE を返します。

ob_end_clean

: 内部バッファーの内容を削除します。 ob_end_flush: 内部バッファの内容をブラウザに送信し、内部バッファを閉じます。出力バッファ
関数形式: void ob_end_flush(void)
説明: この関数は出力バッファの内容 (存在する場合) を送信します


ob_implicit_flush
: 絶対フラッシュをオンまたはオフにします

関数形式: void ob_implicit_flush ([int flag] )

説明: バッファーはデフォルトでオフになっています。絶対出力をオンにすると、各スクリプト出力はブラウザーに直接送信され、flush() を呼び出す必要はありません。
flush() はコンテンツをすぐに送信できます。クライアントへの出力を待機しており、ob_flush() はバッファーがいっぱいになった場合にのみ出力します。次の簡単な php の例で確認できます。

サンプル コード:

<?php
 //这是防止浏览器的缓存
 echo str_repeat(" ",1024);
 for($i=0;$i<5;$i++){
  echo $i; 
  sleep(1);
  flush();//会每隔1s输出一个数字,但是使用ob_flush()会等待5s一起输出
 }
?>
ログイン後にコピー

以上がPHP:flush() と ob_flush()、ob_end_flush() の使用法の違いの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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