PHP GZip和服务器发送的事件流

PHP GZip和服务器发送的事件流,php,gzip,server-sent-events,Php,Gzip,Server Sent Events,我正在用PHP编写流,收到错误: “未能刷新缓冲区zlib输出压缩” 我认为这是由于试图刷新gzip输出 以下是我的PHP代码: header ("Content-Type: text/event-stream\n\n"); header ("Cache-Control: no-cache"); echo "data: {$json}"; echo "\n\n"; ob_flush(); // ERROR HERE flush(); 我的问题是,最好的方法是什么?理想情况下,不必在apac

我正在用PHP编写流,收到错误:

“未能刷新缓冲区zlib输出压缩”

我认为这是由于试图刷新gzip输出

以下是我的PHP代码:

header ("Content-Type: text/event-stream\n\n");
header ("Cache-Control: no-cache");

echo "data: {$json}";
echo "\n\n";

ob_flush(); // ERROR HERE
flush();
我的问题是,最好的方法是什么?理想情况下,不必在apache中禁用gzip,可以在PHP中关闭它吗

我试过了,但没用:

if(ini_get('zlib.output_compression')){
    ini_set('zlib.output_compression', 'Off');
}

不能在ob_uu输出处理程序中使用zlib输出压缩。请参阅zlib.output_compression上的php文档,它多次声明

如果您发现在php中启用输出压缩的最简单方法是:

ini_set("zlib.output_compression", 1);
ini_set("zlib.output_compression_level", 9);
把所有的东西都弄松。现在,当客户端请求具有如下标题的页面时:

Accept-Encoding: gzip, deflate
zlib将为您gzip您的响应主体,并在响应中为您设置:

Content-Encoding: gzip
我花了好几个小时在这上面,才意识到这两行字有多么简单。不要含蓄地使用任何刷新