我在localhost写了一个简单的爬行脚本(在php中)(有4个版本)。所有这些都在localhost上运行良好。但当我将它们移动到共享主机时,其中两个工作其他人给出了内部服务器错误。我查看了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
我搜索了但是找不到任何有用的结果。这些错误有什么关系?有什么想法吗?
答案 0 :(得分:30)
如果您可以访问Linux服务器,请使用vim编辑/etc/httpd/conf.d/fcgid.conf
文件
将FcgidIOTimeout 45
更改为FcgidIOTimeout 600
重启Apache
然后将解决快速CGI超时。
答案 1 :(得分:2)
我在使用Drupal7安装的MediaTemple Grid实例上遇到此问题;原来这是由FastCGI引起的;切换到正常/稳定的CGI似乎已经解决了这个问题。
答案 2 :(得分:2)
如果您正在使用虚拟主机(在我的情况下我是ispconfig),您需要对虚拟主机配置文件进行更改。每个虚拟主机的这些文件都在/etc/httpd/conf/sites-available
下。只需编辑您想要的配置文件,找到IPCCommTimeout
并将当前值设置为更高的数字。如果您有常规站点和SSL站点,则可能需要对同一配置文件中的两个变量进行此更改。
答案 3 :(得分:0)
在61秒内读取数据超时
他们超时了。您的执行时间可能设置为60秒。因此,在61秒时,该过程被杀死,因此过早结束。
您可以调整超时(不推荐)或通过其他来源运行脚本(推荐)。
答案 4 :(得分:0)
基本上,您的脚本运行时间太长,无法进行服务器配置。 mod_fcgid正在等待php响应,它的设置在61秒后放弃。由于此共享托管,您可能无法更改它。
这不是应该通过浏览器/网络服务器运行的东西。将其写为控制台脚本。
答案 5 :(得分:0)
如果有任何问题涉及mod_fcgid,如下所示: _mod_fcgid:在XX秒内读取数据超时 _mod_fcgid:无法应用
的进程槽请优先解决这些问题:
_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
答案 6 :(得分:0)
mod_cfgid在执行php脚本时引入了除PHP max_execution_time
之外的其他时间限制。无论哪个首先“获胜”。
据我所知,mod_cfgid认为有很多时间限制配置项,我不是专家告诉哪一个做了哪些,但至少在我们的例子中添加了以下行
IPCCommTimeout 9999
fcgid.conf
中的解决了我们意外的超时问题。
答案 7 :(得分:0)
增加max_execution_time
的值,即:
<?php
ini_set('max_execution_time', 300); # 5 minutes
...