如何使用nginx + PHP-FPM启用PHP的flush()?

我正在使用PHP-FPM的nginx(已安装APC)。

我需要PHP的flush()来工作。 这可能吗?

到目前为止我尝试过的东西:

  • 禁用php.ini所有输出缓冲以及输出压缩。
  • 禁用nginxconfiguration中的gzip
  • 将nginx的fastcgi_*缓冲设置和fastcgi_max_temp_file_size设置为零。

我相信我一定会错过一些东西,因为我在这里和其他地方跑过很多post,人们声称他们已经有所作为,但是我看起来没有运气。

可悲的是,用nginx是不可能的。 fastcgi的nginx实现需要使用缓冲区,即使将缓冲区指令设置为0,也只会导致缓冲区而不是内存缓冲区。

你将不得不找出一些替代系统,比如可以轮询状态的队列。 (比如说ala gearman)

我想要同样的东西,事实certificate这是可能的。 所有你需要的是这个之前什么是回声:

 header('Content-Encoding: none;'); 

然后冲洗你正常的冲洗:

 ob_end_flush(); flush(); 

Nginx似乎已经closures了编码,而不是gzip。

这是可能的,看看这个答案 。

我自己试了一下,它工作。


升级你的nginx服务器{}configuration:

 fastcgi_keep_conn on; # < solution proxy_buffering off; gzip off;