LXXV出力制御関数(output control)

導入

出力制御関数により、スクリプトから送信される出力を制御することが可 能になります。この機能は、複数の異なった場面、特にスクリプトがデー タ出力を開始した後にヘッダをブラウザに送信する必要がある場合に有用 です。出力制御関数は、 header() または setcookie() を使用して送信されたヘッダには作用せ ず、 echo() のような関数とPHPコードのブロック間 のデータにのみ作用します。

要件

これらの関数は、標準モジュールの一部と して利用可能であり、常に使用できます。

インストール手順

これらの関数はPHPコアに含まれるため、使用す る際にインストールは不要です。

実行用の設定

これらの関数の動作は、 php.ini の設定により変化します。

表 1出力制御設定オプション

名前 デフォルト 変更の可否
output_buffering "0" PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler NULL PHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush "0" PHP_INI_PERDIR|PHP_INI_SYSTEM
PHP_INI_* 定数の詳細と定義については、 ini_set() を参照して下さい。

以下に設定ディレクティブの簡単な説明を示します。

output_buffering boolean / integer

このディレクティブを'On'と設定することにより、全てのファイルに関 して出力バッファリングを有効にすることができます。 特定の大きさにバッファの大きさを制限したい場合、このディレクティ ブの値として'On'の代わりに最大バイト数(例:output_buffering=4096) を使用することができます。

output_handler string

スクリプトの全ての出力を関数にリダイレクトすることができます。 例えば、output_handlerに mb_output_handler() を 指定した場合、文字エンコーディングは透過的に指定したエンコーディ ングに変換されます。出力ハンドラを指定することにより自動的に出力 バッファリングをonにします。

注意 ob_inconv_handler() mb_output_handler() の両方で使用することはで きません。また、 ob_gzhandler() zlib.output_compression の両方を使用することはできません。

implicit_flush boolean

デフォルトは FALSE です。これを TRUE 変更にすると、PHPが 各出力ブロックの後で自動的に出力レイヤをフラッシュするよう指定し ます。これは、各 print() および HTML ブロックの後で flush() 関数をコールすることと等価です。

Web環境の中で PHP を使用している時、 このオプションをonに変更すると、著しい性能低下が生じるため、 通常はデバッグ目的のみにすることが推奨されます。 CLI SAPI のもとで実行される時、この値はデフォルトで TRUE に なっています。

ob_implicit_flush() も参照して下さい。



リソース型

この拡張モジュールはリソース型を全く定義し ません。

定義済みの定数

この拡張モジュールは定数を全く定義しませ ん。

例 1出力制御の例

 ?php

ob_start();
echo "Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

? 


上記の例では、 echo() からの出力は、 ob_end_flush() がコールされるまで出力バッファに 保存されます。この際、 setcookie() をコールするとエラーを発生することな くクッキーが保存されます。(通常、データの送信後はブラウザにヘッダ を送信することはできません。)

注意 PHP 4.1 (および4.2)から4.3に更新する際、前のバージョンのバグのせ いで、 php.iniimplict_flushOFF にする必要があります。さもないと、 ob_start() を使用する全ての出力は、出力を抑制 することができなくなります。

以下も参照下さい:

header() および setcookie() も参照下さい。

目次
flush -- 出力バッファをフラッシュする
ob_clean -- 出力バッファをクリア(消去)する
ob_end_clean -- 出力用バッファをクリア(消去)し、出力のバッファリングをオフにする
ob_end_flush -- 出力用バッファをフラッシュ(送信)し、出力のバッファリングをオフに する
ob_flush -- 出力バッファをフラッシュ(送信)する
ob_get_contents -- 出力用バッファの内容を返す
ob_get_length -- 出力バッファの長さを返す
ob_get_level -- 出力バッファリング機構のネストレベルを返す
ob_get_status -- Get status of output buffers
ob_gzhandler -- 出力バッファをgzip圧縮するためのob_startコールバック関数
ob_implicit_flush -- 自動フラッシュをオンまたはオフにする
ob_start -- 出力のバッファリングを有効にする