我有一个销售非常大(2 - 4 GB)可下载文件的Magento商店。每当有人下载文件并且如果他们在文件继续下载时尝试继续浏览时,浏览器会停止运行直到超时,从而引发此错误:
“无法发送标题;标题已在/home/xyz/public_html/app/code/core/Mage/Downloadable/Helper/Download.php,第282行发送”
我已经检查过,并且Download.php文件中没有我可以看到的空格。此外,只有当有人在同一浏览器中下载期间尝试继续浏览时才会发生这种情况。打开另一个浏览器,一切顺利,快速,显然Magento与客户端的单一连接陷入困境?
另一个症状:在下载过程中,如上所述,点击网站上的其他任何地方都会停顿。但是,如果在不去的任何时间段我取消文件下载,则会立即加载新页面。这意味着取消下载会以某种方式释放浏览器以进行其他连接。
环境:
我最初使用mod_fcgi和eaccelerator运行服务器但是在长时间下载期间它保持超时,即使在玩了我能找到的所有FCGI设置之后,所以现在它正在运行SuPHP。
Apache 2.2 / cPanel 11.30 / CentOS 5.5 /专用服务器4 GB RAM / Magento 1.4.2
如果有帮助,这是网站:http://store.gmvbodybuilding.com
我保证会保存一只小猫或种植一棵树,并在任何人帮忙解决这个问题后给它们命名!
:)
答案 0 :(得分:0)
如果Magento使用默认的基于文件的PHP会话处理程序,则停顿将由于下载脚本锁定会话文件。在下载开始之前,您需要在下载脚本中发出明确的session_write_close()
。这将释放/解锁会话文件,并允许用户浏览网站上的其他页面。否则,在下载过程中进入的每个请求都会挂起session_start(),特定脚本会尝试在会话文件上获得自己的锁定。