我写在本地主机一个简单的爬行脚本(在PHP)(4种变化)。 他们都在本地主机的罚款。 但是,当我让他们移动到共享主机,他们两个人的工作给内部服务器错误。 我看着Error_log和我看到这些行:
[Wed Jan 23 22:01:02 2013] [warn] [client ***] mod_fcgid: read data timeout in 61 seconds
[Wed Jan 23 22:01:02 2013] [error] [client ***] Premature end of script headers: index.php
我搜索,但我无法找到任何有用的结果。 什么是关系到这些错误? 有任何想法吗?
如果您可以访问Linux服务器,请编辑/etc/httpd/conf.d/fcgid.conf
用vim文件。
更改FcgidIOTimeout 45
至FcgidIOTimeout 600
。
重新启动Apache。
然后快速CGI超时都将迎刃而解。
我有一个Drupal7一个MEDIATEMPLE网格实例此问题,请安装; 原来它正在通过的FastCGI引起的; 切换到正常/稳定CGI似乎已经解决了这一问题。
如果你使用虚拟主机(在我的情况我已经ispconfig),你需要做虚拟主机的配置文件改变。 这些文件下/etc/httpd/conf/sites-available
为每个虚拟主机。 只要编辑您想要的配置文件,找到IPCCommTimeout
和电流值设置为一个较大的数字。 你可能需要做此更改的情况下,你有定期的和SSL的网站在相同的配置文件,这两个变量。
基本上你的脚本运行的服务器配置太长。 mod_fcgid正在等待PHP的回应,其设置到61秒后放弃。 由于这种共享主机,你可能不会被允许去改变它。
这是不是应该通过浏览器/ Web服务器反正运行。 写它作为一个控制台脚本。
如果有任何问题mod_fcgid涉及象下面这样:_mod_fcgid:在_mod_fcgid XX秒读取数据超时:对于不能申请过程槽
请解决这些问题的优先级:
_Increasing the memory limit of php (default 128M, up to 256, 384, ... then restart apache anh check it again)
_Increasing the time out of FCGI, but not need if above is ok
在61秒读取数据超时
他们超时。 很可能你的执行时间设置为60秒。 因此,在61秒,程序被打死,因此不得不提前结束 。
您可以调整超时(不推荐)或运行通过其他来源的脚本(推荐)。
mod_cfgid介绍,除了PHP的其他时间限制max_execution_time
在执行PHP脚本。 以先到者为准“胜”。
至于我可以看到,有mod_cfgid认为许多时间限制的配置项目,我不是专家告诉哪一个做它,但至少在我们的例子中添加以下行
IPCCommTimeout 9999
在fcgid.conf
解决了我们意想不到的超时问题。
文章来源: Premature end of script headers: index.php, mod_fcgid: read data timeout in 61 seconds