[PHP-users 7082] Re: Content-Lengthについて

Yasuo Ohgaki php-users@php.gr.jp
Tue, 23 Apr 2002 15:51:54 +0900


koizumi wrote:
> mitともうします。
> いつも参考にさせていただいております
> 
> 
> 現在、RedHatLinux7.2上で、Apache1.3.23+PHP4.1.2にて開発を行っております。
> その際に、PHPで出力されるページのContent-Lengthをレスポンスヘッダに
> 追加したいと思っております。
> (基本的には、動的に生成されるページのContent-Lengthが取れるのかと
> 言うのも疑問なのですが・・・ )
> 実装方法としては、出力する前に全てのコンテンツのサイズ(filesize)を計り、
> その合計値をheader()関数で出力するとかになってしまうのかなと思っていますが、
> もっとスマートな形で実装できないものかと皆さんの知恵をお借りしたい次第です。
> 何卒宜しくお願い致します。

php.iniでoutput bufferringを有効にするだけでOKです、と
言いたい所ですが、きちんと実装されていません。

Zlib.output_compression, trans_sid, mb_output_handler
などのアウトプットハンドラーを利用していない場合は、ob_start
で作成したバッファーサイズを利用すれば簡単に実装できます。
(zlib.output_compression以外は何とかできますが、zlib.ouput
compressionはphp.iniのみで開始を指定するので現状では適切な
Content Lengthヘッダを付ける事は不可能です)

4.2.0からはOutput Handler用の関数がいくつか追加されている
のでこれらの関数を利用するとどのハンドラ登録されているか?等が判り
ます。

4.1.2を使っている場合、ob_end_*()関数には気を付けましょう。
使い方によっては、クラッシュし納得の行かない動作をします。

# Zeevが一度実装していたような気がするのですが、4.3.0-dev
# の出力をスニファーで見た所、Content-Lengthヘッダは無い
# ようです。
# PHP自体に実装するのは簡単なのですが、いろいろなSAPIと整
# 合性を取るのは手間が必要そうです。

--
Yasuo Ohgaki





__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/