mirror of
https://github.com/php/doc-ja.git
synced 2026-04-27 01:48:12 +02:00
120 lines
5.2 KiB
XML
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
|
|
-->
|