//ignore_user_abort(true);//是否忽略浏览器的断开而继续执行脚本
header( 'Content-Type: text/html;charset=utf-8' );
echo str_pad("",1000); //输出1000个空格(浏览器需要接受一定长度的数据之后才会输出内容)
echo 'begin...<br>';
ob_flush();
flush();
for($i=0;$i<10;$i++)
{
echo 'loading '.$i.'0%<br>';
if ( connection_aborted() )//检查是否断开客户机。 如果已终止连接,则该函返回 1,否则返回 0
{
exit;
}
ob_flush();
flush();
sleep(1);//睡眠一秒
}
echo 'ok';
ログイン後にコピー
/*
まず、PHP の出力キャッシュをオンにします: echo,print -> ブラウザのバッファリング -> 2. php 出力キャッシュ: echo、print -> サーバーのバッファリング -> ブラウザのバッファリング -> ブラウザの出力キャッシュも明確にします: IE は 256 バイト、Chrome と FireFox は 1000 バイト、出力データのみがこの長さまたはスクリプトに達しますデータはブラウザが終了した後にのみページに出力されます
いくつかの PHP 設定と使用される API について説明します:
1.php.ini の output_buffering 設定
?Off: PHP 出力キャッシュをオフにすることを意味します
?On: 無制限にオンにする大きな出力キャッシュ
?4096: サイズ 4096Byte の出力キャッシュをオンにします
2.php.ini の Implicit_flush 構成
?On: 各出力 (echo、print など) の後に、flush() 関数が自動的に実行されることを示します。
?Off: On とは対照的に、各出力後に flash() は呼び出されません。ただし、出力する前に、flush() 関数を使用できます。有効にしなくても構いませんが、より柔軟です
3 .ob_flush() 関数: PHP バッファリングからデータを取り出し、サーバーのバッファリングに入れます
4.flush() 関数:サーバーのバッファリングからのデータをブラウザのバッファリングに置きます
5.ob_start() 関数: サーバー上のバッファを開きます。すべての出力を保存します。そのため、echo が使用されるたびに、プログラムが終了するか、ob_flush() を使用して終了されるまで、出力はバッファーに追加されます。次に、サーバー内のバッファーの内容がブラウザーに送信され、ブラウザーによって解析されて表示されます。
ob_* 一連の関数は、PHP 自体の出力バッファーを操作します。
ob_get_contents() - の内容を返します。出力バッファー
ob_flush( ) - 出力バッファーの内容をフラッシュ (送信)
ob_clean() - 出力バッファーをクリア (消去)
ob_end_flush() - 出力バッファーの内容をフラッシュ (送信) して閉じるバッファー
ob_end_clean() - バッファーをクリア (消去) し、出力バッファーを閉じる
flush() - 出力バッファーをフラッシュする
概要:
ob_flush は、PHP 自身のバッファーをフラッシュします。
関数 ob_end_clean は、バッファーの内容をクリアし、バッファは閉じますが、内容は出力されません。
このとき、バッファの内容を取得するには、ob_end_clean() の前で関数 ob_get_contents() を使用する必要があります。
この場合、ob_end_clean() を実行する前にコンテンツを変数に保存し、ob_end_clean() の後にその変数を操作できます
静的な HTML コンテンツをキャッシュするために使用できます
注: フラッシュは、厳密に言えば、これのみですPHP が Apache モジュール (ハンドラーまたはフィルター) としてインストールされている場合の実際的な効果は、WebServer のバッファー (特に Apache を参照していると考えられます) をリフレッシュします。 sapi_module の関数ポインター、Apache の API が間接的に呼び出されます: ap_rflush は Apache の出力バッファーをリフレッシュします もちろん、マニュアルには、このアクションの結果を変更する可能性のある Apache の他のモジュールがあるとも書かれています。 mod_gzip などの Apache モジュールは、それ自体で出力キャッシュを実行する場合があるため、flush() 関数によって生成された結果がクライアント ブラウザにすぐに送信されなくなります。
ブラウザでも、受信したコンテンツを表示する前にキャッシュします。たとえば、Netscape ブラウザは改行または HTML タグの先頭を受け取るまでコンテンツをキャッシュし、 タグを受け取るまでテーブル全体を表示しません。
3. Microsoft Internet Explorer の一部のバージョンでは、256 バイトを受信した後にのみページの表示が開始されるため、これらのブラウザーがページのコンテンツを表示できるようにするには、追加のスペースを送信する必要があります。
したがって、この 2 つを使用する正しい順序は、最初に ob_flush、次にフラッシュです。
もちろん、他の sapi ではフラッシュを呼び出すことはできませんが、コードの移植性を確保するために、
*/
出典:
http:/ / bbs.csdn.net/topics/310167610
http://my.oschina.net/miaowang/blog/349290
http://www.cnblogs.com/daxian2012/archive/2012 / 09/12/2682136.html
無私無欲の共有をしていただきありがとうございます!
以上、PHP実行時に出力されるデータの並び替えについて内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。