0

先日、php 5 用に作成した新しいスクリプトが、php スクリプトが実際に終了する前に表示可能な html を出力し始めたことに気付きました。4でこうなった?

たとえば、各反復で何かをエコーする長いループがあります。kb単位で出力が小さかったので、ダウンロード速度による遅延ではなかったと思います。誰かが出力の違いを説明できますか?

4

4 に答える 4

6

おそらく、 output_bufferingディレクティブの設定に違いがあるのphp.iniでしょうか?

が有効な場合output_buffering、PHP は生成された出力をメモリに「保持」し(少なくとも、メモリ バッファのサイズよりも大きくならない場合)、ページの生成が終了したときにのみブラウザに送信します。

が無効になっている場合output_buffering、スクリプトの実行がまだ終了していなくても、出力は生成されるとすぐに送信されます。

于 2009-12-20T21:02:57.020 に答える
5

PHP 4 と 5 でこの点に違いがあるとは思えませんが、両方のバージョンでこの動作を得ることができますoutput_buffer。PHP 5 のデフォルト値は、PHP 4 のデフォルト値とは異なるのでしょうか? (チェックしていません)

于 2009-12-20T21:02:47.673 に答える
1

データが送信されるとき、PHP構成に依存し、それは出力バッファーであり、バッファーのように動作します。

そうは言っても、関数ob_start()を使用しob_end_flush()てバッファを制御することができます。Zend Frameworkは、たとえば出力バッファリングでいくつかの巧妙なことを行います...

于 2009-12-21T23:06:57.383 に答える
1

通常の容疑者は次のとおりです。

ツールで phpinfo() を詳しく見て、HTTP ヘッダーを確認すると役立ちます。

于 2009-12-22T17:51:50.380 に答える