脚本标头过早结束:index.php,mod_fcgid:在61秒内读取数据超时

时间:2013-01-23 20:16:33

标签: php apache timeout mod-fcgid

我在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

我搜索了但是找不到任何有用的结果。这些错误有什么关系?有什么想法吗?

8 个答案:

答案 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
...