php.ini
ファイルを変更したり、.htaccess
ファイルを用意したりせずに PHP で実行時に出力バッファリングをオフにするには、スクリプトの先頭でob_end_flush()
orを使用します。ob_end_clean()
例えば:
これは、バッファリングなしで出力する必要があります。
<?php
ob_end_clean();
for ($i = 0; $i < 5; $i++)
{
echo "$i\n";
flush();
usleep(0.5e6);
}
これは、呼び出しoutput_buffering
に関係なく、がオンの場合、バッファリングを使用して (一度にすべて) 出力します。flush()
<?php
for ($i = 0; $i < 5; $i++)
{
echo "$i\n";
flush();
usleep(0.5e6);
}
その名前にもかかわらず、各出力の後に暗黙的にではなくをob_implicit_flush
呼び出します。これは、最初に出力バッファを閉じた後のこのインスタンスで便利です。flush()
ob_flush()
<?php
ob_end_clean(); // disable output buffer
ob_implicit_flush(); // call flush() automatically after every output
for ($i = 0; $i < 5; $i++)
{
echo "$i\n";
usleep(0.5e6);
}
これにより、PHP 側が修正されます。または同様のことが起こっている可能性がありますmod_deflate
(Ted Collins による回答を参照)。また、Firefox が何かを出力し始める前に、少なくとも 1024 バイトが必要であることを確認しました。