我有一个混合网站,我们有一个带有Magento商店的ExpressionEngine CMS。 在我们的EE网站中,我有一个模板,我在其中调用插件来检索商店购物车信息。 我们使用Magento的身份验证,因此登录的用户是Magento用户。
我们希望展示这样的内容:
插件中的代码连接到Magento,获取登录用户(如果他们已登录)并设置购物车项目数。
这是插件应该返回到模板的HTML:
<span class="carticon">(0)</span><a href="http://www.example.com/store/checkout/cart/">My Cart</a><span>Welcome, MB34!</span><a href="http://www.example.com/store/customer/account/logout/">Logout</a>
但是,如果我在ExpressionEngine上启用gZip,我会得到 ERR_CONTENT_DECODING_FAILED 异常,因为Magento没有内置的gZip。目前我们没有启用mod_deflate,那么EE如何能够进行gZip?它必须通过ob_gzhandler。
现在,如果我修改我的插件以使用这样的ob_gzhandler:
ob_start("ob_gzhandler");
echo trim($result);
ob_end_flush();
我在输出结尾处获得了额外的字符:
任何想法导致了这个以及如何解决它?
我们很快就会启用mod_deflate;会解决它吗?我的意思是我不必使用ob_gzhandler,对吗?
答案 0 :(得分:0)
使用ob_gzhandler
时,重要的是不要将内容与其他编码混合在一起。通过强制ob_end_flush()
,您可能会在实际发送内容之前导致此缓冲区终止。文件末尾的一个简单空行可能导致这种情况。我建议你跳过ob_end_flush()
并让缓冲区在PHP脚本终止时自然结束。
答案 1 :(得分:0)
使用ob_get_contents
ob_start("ob_gzhandler");
echo trim($result);
$gzcontent = ob_get_contents();
ob_end_clean();