検索
ホームページバックエンド開発PHPチュートリアル出力バッファリングに関するディスカッション Outputbuffering_PHP チュートリアルの 1 つ

##################################### ##タイトル 出力バッファリングに関するディスカッション# #organizeDiegoLynn@林国##原著 Zeev Suraski 著 #################################### #### 成果に関するディスカッションバッファリング (出力バッファリング) 目次 HTTP ヘッダー 出力バッファリング テクノロジを使用する理由 出力バッファリングの仕組み 基本的な使用方法 高度な使用法により作業が簡素化されます ハハ、個人的には、出力バッファリングは比較的純粋な機能だと思います。概念的には非常に単純ですが、出力バッファリングは非常に強力であり、開発者は高度で効率的なプログラムを開発しやすくなります。 この記事では、HTTP ヘッダー、出力バッファリングが HTTP ヘッダーの処理にどのように役立つか、および出力バッファリングの高度な使用法をいくつか紹介します。 HTTP ヘッダー [HTTP ヘッダー] HTTP プロトコルを使用して確立されたすべてのリクエストに対して、Web サーバーによって生成される応答は通常、ヘッダーと本文の 2 つの部分で構成されます。たとえば、Web サーバーのドキュメント ルート ディレクトリに example.txt という小さなテキスト ファイルがあり、そのファイルに「Hello, world!」というテキストが含まれている場合、このファイルに対する HTTP リクエストの応答は次のようになります。 1.1 200 OK 日付: Sat, 02 Sep 2000 21:40:08 GMT Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev Last-Modified: Sat, 02 Sep 2000 21:39 :49 GMT ETag: "12600b-e-39b173a5" Accept-Ranges: bytes Content-Length: 14 Connection: close Content-Type: text/plain Hello, world! このリクエストの最初の部分 (つまり、大部分) HTTPヘッダーです。 HTTP ヘッダーはブラウザーのユーザーには表示されませんが、文書のコンテンツ タイプ、使用されているプロトコルのバージョン、文書の最終変更日などのブラウザー用の情報が含まれています。 HTTP ヘッダーには多くの規則はありません。通常、その形式は次のとおりです。 フィールド: 値[フィールド: 値] 文書本体と空白行で区切る必要があります。 この HTTP ヘッダーの情報は、PHP スクリプトから追加または変更できます。たとえば、 header() 関数を使用できます。 header("Location: http://www.php.net/"); // http://www.php.net/ にリダイレクトします。 SetCookie を使用することもできます。 () function: SetCookie("foo", "bar"); HTTP Cookie が HTTP ヘッダーを使用して実装されていることはご存知かもしれません。たとえば、次の PHP ファイルに対する HTTP リクエスト応答 は次のようになります: HTTP/1.1 200 OK Date: Sat, 02 Sep 2000 21:43:02 GMT Server: Apache/1.3.11 (Unix) mod_macro/1.1。 1 PHP /4.0.2-dev X-Powered-By: PHP/4.0.2-dev Set-Cookie: foo=bar Connection: close Content-Type: text/html ブラウザは、Cookie から返された HTTP ヘッダーを読み取ります。サーバーでは、foo という名前の Cookie (この場合はセッション Cookie) が送信され、その値が bar であることがわかります。 出力バッファリング テクノロジを使用する理由 出力バッファリング テクノロジの必要性は、PHP/FI 2.0 の時点で明らかでした。このバージョンの PHP を使用したことがある場合は、「おっと、ヘッダーの送信後に SetCookie が呼び出されました」というエラー メッセージが頻繁に表示され、原因は何だったのか頭を悩ませたことをまだ覚えているかもしれません。 PHP の最新バージョン (PHP 3.0 または PHP 4.0) を使用したことがある場合は、次のエラー メッセージをご存知でしょう。「おっと、ヘッダーが送信された後に php_set_cookie が呼び出されました。」あるいは、PHP の header() 関数を呼び出そうとすると、「ヘッダー情報を追加できません - ヘッダーはすでに送信されました」というメッセージが表示される場合があります。一般に、出力バッファリング テクノロジのユーザーはこれらの煩わしいエラー メッセージを回避しますが、開発者はこれを高度な目的に使用することもできます。 これらのエラーはいつ発生しましたか?これらのエラー メッセージは、HTTP ヘッダーの送信後にヘッダー情報を追加または変更しようとした場合、およびドキュメント本文とヘッダーの間に空白行がない場合に発生する可能性があります。これがどのように起こるかを理解するために、PHP が HTTP ヘッダー出力と本文出力をどのように処理するかを見てみましょう。 スクリプトの実行が開始されると、ヘッダー情報と本文情報を同時に送信できます。ヘッダー情報 (header() または SetCookie() 関数から) はすぐには送信されず、リストに保存されます。 これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます。ただし、スクリプトがヘッダー以外の出力を送信すると (たとえば、HTML ブロックまたは print() 呼び出しを使用して)、PHP は最初にすべてのヘッダーを送信し、次に空行を送信し、HTTP ヘッダーを終了してから、メインデータは引き続き送信されます。これ以降、ヘッダー情報を追加または変更しようとする試みは許可されず、上記のエラー メッセージのいずれかが送信されます。 これは大きな問題を引き起こしませんが、場合によっては、入力を送信する前に HTTP ヘッダーを終了することにより、スクリプト ロジックが複雑になるだけです。出力バッファリング技術はこれらの問題を解決できます。出力バッファリングの仕組み 出力バッファリングが有効になっている場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダー行の変更、追加、または Cookie の設定を行うことができます。最も単純なケースでは、スクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。それは簡単です。 基本的な使用法 次の 4 つの関数を使用すると、出力バッファリングの制御に役立ちます。 ob_start() は、出力バッファリング メカニズムを有効にします。出力バッファリングは複数のレベルをサポートします。たとえば、ob_start() 関数は複数回呼び出すことができます。 ob_end_flush() は出力バッファ (出力バッファ) を送信し、出力バッファリング メカニズムを無効にします。 ob_end_clean() は出力バッファを送信せずにクリアし、出力バッファリングを無効にします。 ob_get_contents() は、現在の出力バッファを文字列として返します。スクリプトによって出力された出力を処理できます。 さらに、php.ini の Output_buffering ディレクティブを有効にすることもできます。このディレクティブが有効な場合、各 PHP スクリプトは最初に ob_start() 関数を呼び出すことと同じになります。例 1

例 1

ここでは、(HTML コード ブロックと print ステートメントで) 出力を送信したにもかかわらず、出力バッファリング メカニズムのおかげで、エラーなしで SetCookie() 呼び出しを使用できます。この目的で出力バッファリング メカニズムを使用すると、パフォーマンスに一定のペナルティが発生するため、このメカニズムをデフォルトで有効にしないことをお勧めします。ただし、より複雑なスクリプトの場合は、出力バッファリングによってロジックを簡素化できます。例 2 この例は、文字列の長さを決定する非効率的な方法を示しています。 strlen() 関数を単に使用するのではなく、最初に出力バッファリング メカニズムを有効にし、文字列を出力してから、出力バッファの長さを決定します。最後に出力バッファをクリアし (送信ではなく)、出力バッファリング メカニズムを無効にします。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/531718.html技術記事 ##################################### ##タイトル 出力バッファリングに関するディスカッション# #organizeDiegoLynn@林国##原作 Zeev Suraski 著 #################################### #### About.. .
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境