2011年11月10日木曜日

PHP・・・ 沈黙の"flush"

PHPのflushを実行しても画面に反映されない場合の原因と対処

PHP・・・ 沈黙の"flush"

以下は上記サイト引用です

1.mod_gzip のような Apache 用のサーバモジュールはそれ自体がバッファリングを行います。
そのため、flush() をコールしても即時にデータをクライアントに送信しないという結果につながります。

2.ブラウザ側で表示前に入力をバッファリングすることもあり得ます。Netscape では例えば改行または
開始タグを受信するまでテキストはバッファリングされ、最も外側のテーブルのタグが現れるまでテーブルは描画されません。
3.いくつかのバージョンの Microsoft Internet Explorer は 256 バイトの 出力を受けてからページを表示し始めます。
このため、これらのブラウザにページを表示させるには、フラッシュする前に余分な空白を送信する必要があるかもしれません。

2. 3. は容易に理解できるし対処もできます。しかしそれでもブラウザは沈黙。残ったのは 1. です。
意味は分かりますが、対処法まで説明してくれていません。こういう事ってアマは本当に困ります。プロには常識なんでしょうけど。

散々探しまわってようやく見つけたのが MODWEST Customer Support ここに対処法の説明がありました。
mod_gzip_on Off と .htaccess に1行書き込むだけ。
「あっけない」って感じですが、とにかくこれでようやくブラウザはサクサクと出力し始めてくれました。