2011-06-18 34 views
6

PHP/Apacheでいくつか試しています。 私はこのコードを持っているとしましょう。私の地元のApacheウェブサーバ上でいくつかの理由でPHP読み込み中のコンテンツがページとして読み込まれる

<div>DIV 1</div> 
<?php sleep(2); ?> 
<div>DIV 2</div> 
<?php sleep(2); ?> 
<div>DIV 3</div> 
<?php sleep(2); ?> 
<div>DIV 4</div> 
<?php sleep(2); ?> 

すべてのデータのすべての4スリープ()sは(8秒)が実行された後、一度、ブラウザに表示されます。

ただし、ホストのサーバーで実行すると、データはリアルタイムでブラウザにエコーされます。 ... div1が表示され、2秒後div 2が表示されます。

なぜですか?これはApacheの設定ですか?

+0

それはあなたがして確実性のいずれかの大規模な程度に制御することを試みるべきではありませんすることはできませんいくつかの層とデバイスを介して、バッファリングやキャッシング、です。 –

答えて

6

いいえ、それはphpの設定かもしれません。

ローカルサーバでは、php.iniファイルでoutput_bufferingが有効になっています。

あなたは設定して、それを無効にすることができます

output_buffering = off 

を追加し、コンテンツがブラウザにエコーのようなステートメントを使用するたびに送信されていることを確認するには:

implicit_flush = on 

また、することができますoutput_bufferingに値を指定してバッファサイズを設定します。

output_buffering = 4096 

ここで、バッファサイズは4KBです。

出力バッファリングは、コードにflush()命令があるか、バッファがいっぱいになったり、スクリプトが終了するまで、ブラウザに送信されるすべてのデータをメモリに保存するようにPHPに指示します。ここで

はphp.netからの出力バッファのための完全なリファレンスです:php output buffer

+0

@ dader51:あなたは4Kioを意味しますか? –

+0

ああ申し訳ありません、私の英語!私は4KBを意味しました。 – dader

+0

正しい出力バッファリングがオンになっていました。私はそれを無効にしたが、それでも同じことをする。他のアイデア? – John

関連する問題