【发布时间】:2014-05-08 11:40:57
【问题描述】:
我正在将 php 代码转换为 hhvm。特别是一个页面有时需要在发送一些电子邮件和其他一些慢速任务之前向浏览器刷新()状态消息,然后更新状态消息。
在 hhvm(使用 php-fpm 和 nginx)之前我使用过:
header('Content-Encoding: none;');
echo "About to send emails...";
if (ob_get_level() > 0) { ob_end_flush(); }
flush();
// Emails sent here
echo "Emails sent.";
所以内容编码停止使用 gzip,然后刷新发送第一条消息,然后在页面结束时发送第二条消息。
使用 HHVM(和 nginx),设置 Content-encoding 标头有效(它显示在浏览器中),但 hhvm 或 nginx 都忽略它并将页面作为 gzip 压缩内容发送,因此浏览器会解释 content-encoding =无二进制数据。
如何在 HHVM 的 php 代码中禁用 gzip?
(我知道我可以在配置文件中关闭它,但我希望它几乎在每次页面加载时都保持开启,除了一些运行速度较慢的页面。)
【问题讨论】:
-
内容最好保持明文,gzipping交给nginx处理。您可以为 nginx(针对特定的 url 模式)创建一个自定义规则,以不 gzip 输出。这听起来如何?
-
@Sina 谢谢,澄清一下:php 代码不做 gzip,只在 nginx 中,但在这种情况下它不应该 gzip,因为它是分两部分发送的。自定义规则将是最后的手段(这将意味着重新构建大量代码,这会很烦人,因为它一直在我们的旧设置下工作。)
-
我认为这可能是一个 hhvm 错误,我在这里发布了一个问题:github.com/facebook/hhvm/issues/2641
-
有完全相同的问题。有什么解决办法吗? stackoverflow.com/questions/34338641/…
-
当时我放弃了它,从那以后就再也没有尝试过 HHVM。现在 php7 已经推出并以类似的速度运行,我们将坚持下去。
标签: php nginx http-headers gzip hhvm