5

所以我在我的godaddy(不要恨我)虚拟服务器上运行一个PHP脚本,我预计需要大约5分钟才能完成执行。该脚本是 CURLing 页面,但一次不会超过 1 页(它是在循环中重复使用相同的变量)。我将 php5.ini 文件修改为以下内容:

max_execution_time = 600
max_input_time = 120
memory_limit = 64M 

我通过 phpinfo 验证了 ini 文件更改已经生效,但是 120 秒后出现 Apache 500 错误。这是这次的错误日志:

[Wed Jul 11 22:08:52 2012] [warn] [client **.**.**.***] mod_fcgid: read data timeout in   120 seconds
[Wed Jul 11 22:08:52 2012] [error] [client **.**.**.***] Premature end of script headers: test.php

如果有人对我为什么会收到这些错误有任何想法或对尝试的事情有任何建议,我将不胜感激。我确实注意到 php 设置中的一个选项设置为 120,但我不确定它是否会产生影响:realpath_cache_tt

我还在 .php 文件中设置了时间限制: set_time_limit( 600 );

提前致谢。

更新: 这是我在 .htaccess 文件中尝试的内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
<IfModule mod_fcgid.c>
IPCCommTimeout  7200
</IfModule>

这会在任何页面加载时导致 Apache 500 错误。 我也禁用了 FastCGI,但问题仍然存在。

已解决RobB 提出以下建议: IPCCommTimeout 7200 这应该可以工作,但是由于我的 Godaddy 共享主机,它是不允许的。是时候寻找新的托管服务了。

4

1 回答 1

6

我不确定在 GoDaddy 上对这个问题的处理,但正常的解决方案如下:

您遇到的问题是由于 FastCGI 执行 PHP 脚本,但它在默认 IO 超时(120 秒)内没有生成响应,从而导致 500 Internal Server Error。

尝试编辑默认的 VirtualHost conf 文件,该文件通常位于并在上下文中/etc/apache2/sites-available/default添加此指令:<VirtualHost>

<IfModule mod_fcgid.c>
   IPCCommTimeout  7200
</IfModule>

保存修改后,使用以下命令重新启动 apache2:sudo /etc/init.d/apache2 restart

根据我从 GoDaddy 可以确定的是,共享主机中 PHP/FastCGI 的最大时间限制为 120 秒,客户端无法增加。我建议联系他们的支持以寻求帮助,希望他们的声誉不会受到影响,您将能够获得帮助。

更新: 不确定它是否会有所帮助,但您可以尝试在您的主机控制中心(设置 > 文件扩展名 > php5)中从 FastCGI 更改为 PHP5。

于 2012-07-12T05:34:53.460 回答