サイトにコメット駆動のチャット スクリプトがあります
私のサーバー構成は PHP-FPM を使用した NGINX です。また、別のポートに apache をインストールしています。
Apache でチャット スクリプトを実行しようとすると、1024 文字でいっぱいになるとバッファー (出力バッファー サイズは 1 KB) がいっぱいになり、自動的にフラッシュされます。
しかし、nginx ではそうではありません。
私のコードはこれに非常に似ています
<?php
// this is to fill the buffer and start output; and it works on apache normally
echo str_repeat(" ",1024);
while($condition){
// Some code here...
$messages = getMessagesFromDatabase();
if($messages){
echo "output"; // output works on apache but not nginx
flush();
ob_flush();
}
usleep(500000); // 0.5 Second
}
?>
私のnginx構成では、gzipをオフにし、proxy_bufferingをオフにしました。
nginxでバッファリングを回避する方法はありますか、私はここでstackoverflowでたくさん検索しましたが、解決策に到達できませんでした
注意してください: 私はすべての PHP 構成でバッファリングをオフにしたくありません。チャット スクリプトでこれを実行したいだけです。