1

我的站点中有一个彗星驱动的聊天脚本

我的服务器配置是带有 PHP-FPM 的 NGINX,我还在不同的端口上安装了 apache。

当我尝试在 Apache 上运行聊天脚本时,当我用 1024 个字符填充缓冲区时(我的输出缓冲大小为 1 KB),它会自动刷新那在 apache 中。

但在 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 回答