21

我在 localhost(有 4 个变体)上编写了一个简单的爬虫脚本(用 php 编写)。他们都在本地主机上工作得很好。但是当我将它们移动到共享主机时,其中两个工作了其他人给了内部服务器错误。我查看了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

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

4

8 回答 8

40

如果您可以访问 Linux 服务器,请/etc/httpd/conf.d/fcgid.conf使用 vim 编辑文件。
更改FcgidIOTimeout 45FcgidIOTimeout 600
重启阿帕奇。
然后将解决快速 CGI 超时问题。

于 2013-04-10T16:31:38.707 回答
2

我在安装 Drupal7 的 MediaTemple Grid 实例上遇到了这个问题;原来它是由 FastCGI 引起的;切换到正常/稳定的 CGI 似乎已经解决了这个问题。

于 2014-06-11T18:37:00.743 回答
2

如果您使用的是虚拟主机(在我的情况下,我使用的是 ispconfig),您需要在虚拟主机配置文件中进行更改。这些文件位于/etc/httpd/conf/sites-available每个虚拟主机下。只需编辑您想要的配置文件,找到IPCCommTimeout并将当前值设置为更高的数字。如果您有常规站点和 SSL 站点,您可能需要对同一配置文件中的两个变量进行此更改。

于 2015-12-14T08:42:39.933 回答
0

读取数据超时 61 秒

他们超时了。您的执行时间很可能设置为 60 秒。因此,在 61 秒时,该进程被终止,因此提前结束

您可以调整超时(不推荐)或通过其他来源运行脚本(推荐)。

于 2013-01-23T20:17:03.410 回答
0

本质上,您的脚本对于服务器配置来说运行时间过长。mod_fcgid 正在等待 php 响应,并设置为在 61 秒后放弃。由于此共享主机,您可能无法更改它。

无论如何,这不应该通过浏览器/网络服务器运行。将其编写为控制台脚本。

于 2013-01-23T20:19:13.460 回答
0

mod_cfgidmax_execution_time在执行 php 脚本时引入了除 PHP 之外的其他时间限制。以先到者为准。

据我所知,mod_cfgid 考虑的时间限制配置项有很多,我不是专家来告诉哪个做哪个,但至少在我们的例子中添加以下行

IPCCommTimeout  9999

fcgid.conf解决了我们意想不到的超时问题。

于 2015-03-08T11:41:34.157 回答
-1

如果 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
于 2014-09-05T04:42:27.297 回答
-1

增加max_execution_time值,即:

<?php
ini_set('max_execution_time', 300); # 5 minutes
...
于 2020-03-09T04:32:52.767 回答