gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:19 27 4
gpt4 key购买 nike

我正在写一个 server sent event在 PHP 中流式传输,我收到错误:

"failed to flush buffer zlib output compression"

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

这是我的 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_ 输出处理程序中使用 zlib 输出压缩。请参阅 zlib.output_compression 上的 php 文档,它多次声明。

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

ini_set("zlib.output_compression", 1);
ini_set("zlib.output_compression_level", 9);

然后松开所有 ob_* 东西。现在,当客户端请求带有标题的页面时:

Accept-Encoding: gzip, deflate

zlib 将为您压缩您的响应正文,并在响应中为您设置:

Content-Encoding: gzip

在意识到这两行代码是多么简单之前,我花了好几个小时在这上面。并且根本不要隐含地使用任何冲洗

关于PHP GZip 和服务器发送的事件流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com