PHP は通常、アウトプットバッファリングが有効になっているため、ブラウザから以下のようなスクリプトを実行しても逐一表示されません。
<?php for ($i = 0; $i < 50; $i++) { echo '|'; sleep(1); } ?>
上記を実行しても、リクエストから 50秒後 に一気に
||||||||||||||||||||||||||||||||||||||||||||||||||
が表示されます。
10秒後に
||||||||||
30秒後に
||||||||||||||||||||||||||||||
と表示させるには、以下のように ob_end_flush() でアウトプットバッファリングをオフにして、echo の後に flush() で出力バッファをフラッシュします。
<?php ob_end_flush(); for ($i = 0; $i < 50; $i++) { echo '|'; flush(); sleep(1); } ?>
[重要]
上記で逐一表示されない場合には、.htaccess に一行
mod_gzip_on Off
と記述すると良いようです。