1
0
mirror of https://github.com/php/doc-ja.git synced 2026-04-27 01:48:12 +02:00
Files
archived-doc-ja/reference/outcontrol/output-buffering.xml
T
2024-12-22 17:32:30 +09:00

120 lines
5.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7ad99aeafea66a1562f668aa3cb11dcc9d9cb951 Maintainer: mumumu Status: ready -->
<chapter xml:id="outcontrol.output-buffering" xmlns="http://docbook.org/ns/docbook">
<title>出力バッファリング</title>
<para>
出力バッファリングとは、ブラウザ(Web の場合) や
シェル(コマンドラインの場合) に出力をフラッシュ(送信して破棄)する前に、
バッファリング(一時的に保存) することです。
出力バッファリングが有効な間は、スクリプトから出力は送信されず、
代わりに内部バッファに保存されます。
</para>
<section>
<title>PHPに影響するバッファリング</title>
<para>
PHP は、出力をフラッシュする際に、
基礎となる ソフトウェア/ハードウェア のインフラストラクチャに依存します。
コマンドライン上のコンソールで実装されているバッファリング
(例: 行バッファリング(訳注: 改行されるごとにフラッシュされる))
や Web のコンテキストにおける ウェブサーバー やブラウザが実装するバッファリング
(例: フルバッファリング(訳注:バッファが一杯になったらフラッシュされる)) は、
エンドユーザーに出力を表示するタイミングに影響を与えます。
サーバーの設定を微調整したり、
さまざまなレイヤーのバッファサイズを揃えたりすることで、これらの影響のいくつかを取り除くことができます。
</para>
</section>
<section>
<title>PHPにおける出力バッファリングの制御</title>
<para>
PHP は、ユーザレベルの出力バッファを提供しており、
バッファリングを開始したり、管理したり、無効にしたりする関数を提供しています。
(これらの関数のほとんどは、<link linkend="ref.outcontrol">ob_<replaceable>*</replaceable></link> 関数にあります)
そして、既存のシステムバッファをフラッシュするための関数をふたつ
(<function>flush</function><function>ob_implicit_flush</function>)
提供しています。
これらの機能の中には、&php.ini; を適切に設定することで、
設定や構成できるものがあります。
</para>
</section>
<section>
<title>バッファリングの用途</title>
<para>
出力バッファリングは一般的に、
バッファリングされた出力を修正したり、検査したり、
リクエストの中で出力を複数回使う場合に有用です。
あるいは、出力をフラッシュするタイミングを制御したい場合にも有用です。
具体的な使用例として、以下が挙げられます:
<itemizedlist>
<listitem>
<simpara>
計算/時間のかかるスクリプトの実行結果をキャッシュする場合。
たとえば、静的な<literal>HTML</literal>ページを生成する場合などです。
</simpara>
</listitem>
<listitem>
<simpara>
生成された出力を表示したり、ファイルに保存したり、
電子メールで送るなどの用途に再利用することができます。
</simpara>
</listitem>
<listitem>
<simpara>
<literal>HTML</literal>ページの <literal>head</literal>
<literal>body</literal> とは別にフラッシュすることで、
ブラウザは時間のかかる可能性のある処理
(例: データベース/ファイルへのアクセス、外部ネットワーク接続)
をスクリプトが実行している間に、外部リソースを読み込むことができます。
これは、<literal>HTTP</literal> ステータスコード
がヘッダ送信後に変更できない場合にのみ有効です。
</simpara>
</listitem>
<listitem>
<simpara>
出力を生成する関数(例: <function>phpinfo</function>)から情報を抽出する場合。
</simpara>
</listitem>
<listitem>
<simpara>
出力を部分的に修正したり、一部を採用したり
(例えば、データの抽出、単語/フレーズの置換、
足りない<literal>HTML</literal>タグの追加)、
特定の条件下(例えばエラー)では完全に破棄することで、
サードパーティのコードの出力を制御します。
</simpara>
</listitem>
<listitem>
<simpara>
特定のウェブサーバーでは利用できない機能をサポートする場合。
(出力の圧縮やエンコードなど)
</simpara>
</listitem>
</itemizedlist>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->