ホームページ >バックエンド開発 >PHPチュートリアル >PHPでのバッファ制御のコード例を詳しく解説

PHPでのバッファ制御のコード例を詳しく解説

黄舟
黄舟オリジナル
2017-03-08 10:12:331743ブラウズ

PHP を使用する場合、誰もが必然的に header 関数と setcookie 関数を使用します。これら 2 つの関数はファイルのヘッダー情報をブラウザーに送信しますが、これら 2 つの関数を使用する前に出力 (空白を含む) がある場合は、次のような出力が行われます。スペース、キャリッジ リターン、ライン フィードなどを使用すると、エラーが表示されます。プロンプト情報は次のとおりです。「ヘッダーはすべて送信準備ができました」!では、出力後にファイルヘッダー情報を送信する方法はあるのでしょうか? PHP 4.0 にはバッファ制御のための関数がいくつか追加されています。これらの関数を使用すると、多くの問題を解決できます。
1. 関連機能の紹介:
1. フラッシュ: バッファー内の内容を出力し、バッファーを削除します。 関数の形式: flash() 説明: この関数は頻繁に使用され、非常に効率的です。
2. ob_start: 出力バッファをオープンします 関数形式: void ob_start(void) 説明: バッファがアクティブ化されると、PHP プログラムからのファイル以外のヘッダー情報はすべて送信されず、内部バッファに保存されます。バッファの内容を出力するには、ob_end_flush() を使用するか、ob_end_clean() を使用してバッファの内容を出力します。
3. ob_get_contents: 内部バッファの内容を返します。 使用法: string ob_get_contents(void) 説明: この関数は、出力バッファがアクティブ化されていない場合、現在のバッファの内容を返します。
4. ob_get_length: 内部バッファーの長さを返します。 使用法: int ob_get_length(void) 説明: この関数は、出力バッファがアクティブ化されていない場合、ob_get_contents と同様に現在のバッファの長さを返します。 FALSE を返します。
5. ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファを閉じます。 使用法: void ob_end_flush(void) 説明: この関数は、出力バッファーの内容 (存在する場合) を送信します。
6. ob_end_clean: 内部バッファの内容を削除し、内部バッファを閉じます。 使用法: void ob_end_clean(void) 注: この関数は内部バッファの内容を出力しません。
7. ob_implicit_flush: 絶対リフレッシュをオンまたはオフにします。 使用法: void ob_implicit_flush ([int flag]) 説明: Perl を使用したことがある人なら誰でも、この文字列でバッファを開いたり閉じたりできること、および ob_implicit_flush 関数を知っています。同様に、デフォルトではバッファをオフにして絶対出力をオンにします。
2. 使用例:
out out through - 4 行目でエラーが発生しました (エラーメッセージは上に示したとおりです)が、ob_start を使用すると、エラーは表示されません。これは、バッファを開くときに文字が表示されるためです。 after echo はブラウザには出力されませんが、flush または ob_end_flush を使用して出力するまでサーバー上に保持されるため、ファイル ヘッダーの出力エラーは発生しません。 个 別の古典的な目的は以下の通りです:
たとえば、サーバーとクライアントの設定情報を取得する場合、この情報はクライアントによって異なります。 PHPINFO ( ) 関数の出力をどうするか?バッファ制御がなかった前はまったく方法がなかったとも言えますが、バッファ制御を使えば簡単に解決できます。


 -------------------------------------------------------------     
    <?   //PHP提示符     
    ob_start();   //打开缓冲区     
    echo   "Hello/n";   //输出     
    header(&#39;location:gotourl.php&#39;);   
    //把浏览器重定向到gotourl.php     
    ?>    
     -------------------------------------------------------------


上記の方法を使用すると、さまざまなユーザーの phpinfo 情報を保存できます. これは以前はできなかったと思います。実は上記は一部の「処理」を「関数」に変換する方法なのです!

上記は、PHP のバッファー制御のコード例の詳細な説明です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) を参照してください。



-->

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。