1

サイトにコメット駆動のチャット スクリプトがあります

私のサーバー構成は 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 構成でバッファリングをオフにしたくありません。チャット スクリプトでこれを実行したいだけです。

4

1 に答える 1

7

nginx サーバー {} 構成をアップグレードします。

fastcgi_keep_conn on; # < solution

proxy_buffering off;
gzip off;
于 2012-11-30T12:14:39.697 に答える