まず最初に、バッファーについて説明します。これは 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: バッファーと出力の内容を更新します。
説明: この関数は頻繁に使用され、非常に効率的です。
: 内部バッファの内容を返します。 関数の形式: string ob_get_contents(void) 説明: この関数は、出力バッファーがアクティブ化されていない場合、FALSE を返します。
: 内部バッファーの長さを返します。 関数の形式: int ob_get_length(void) 説明: この関数は、ob_get_contents と同様に、現在のバッファーの長さを返します。出力バッファーがアクティブ化されていない場合は、FALSE を返します。
: 内部バッファーの内容を削除します。 ob_end_flush: 内部バッファの内容をブラウザに送信し、内部バッファを閉じます。出力バッファ
関数形式: void ob_end_flush(void)
説明: この関数は出力バッファの内容 (存在する場合) を送信します
ob_implicit_flush
: 絶対フラッシュをオンまたはオフにします
説明: バッファーはデフォルトでオフになっています。絶対出力をオンにすると、各スクリプト出力はブラウザーに直接送信され、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 サイトの他の関連記事を参照してください。