私自身、このような問題に遭遇しました。特定のしきい値に達するまで、php および/または Web サーバーがデータをバッファリングしている可能性があるため、出力をフラッシュすることを検討する必要があります。私はこれに関して IIS と格闘するのにひどい時間を過ごしました. さらに、ウェブサーバーに何をすべきかを伝えることもあります。Apache の場合、php.netで見つかったスニペットを次に示します。
flush() と ob_flush() で問題が発生しました。この問題を解決するために私がしたことは、理解するのに時間がかかったので、私が思いついたことを共有したいと思います.
主な問題は、php 設定の "output_buffering" です。設定が大きすぎると、テキストが出力されなくなります。この値を変更するには、php.ini で設定するか、次の行を追加します。
php_value output_buffering "0"
.htaccess ファイルに。PHP_INI_PERDIR であるため、ini_set() では機能しません。
これは、sleep() の前に使用される flush() 関数と組み合わされます。また、適切にフラッシュを開始する前に、いくつかの文字を出力する必要がありました。
public function longpolling()
{
echo str_repeat(" ", 1024); flush();
for( $i = 0; $i < 10; $i++) {
echo $i."<br/>";
flush();
sleep(1);
}
}
また。サーバーでこれを試したところ、htaccess ファイルに php_value 行を追加するまで機能しませんでした。私がやったら、それは期待どおりに機能しました。