2013-03-19 116 views
2

在我的Plesk 11中,PHP 5.4.7。 Apache/2.4.3系统,当我做cron作业时,我从error.log文件中得到这个错误。PHP最大执行时间

[Tue Mar 19 21:33:18 2013] [warn] [client 88.44.55.66] mod_fcgid: read data timeout in 45 seconds 
[Tue Mar 19 21:33:18 2013] [error] [client 88.44.55.66] Premature end of script headers: index.php 

所以我检查的执行时间与此:

echo ini_get('max_execution_time'); 

我得到这个值:1560000

它似乎并不超时问题,但我得到超时错误?

回答为将来的参考:
编辑/etc/httpd/conf.d/fcgid.conf文件与vim。
更改FcgidIOTimeout 45FcgidIOTimeout 600
重新启动Apache。 然后快速CGI超时将被解决。

+0

如果它是一个cron作业,它应该由系统的'crond'使用PHP可执行文件而不是HTTP服务器运行。 – rid 2013-03-19 19:59:23

+0

@rid不幸的是,许多人最终编写cron作业来请求使用wget/curl的页面。 – datasage 2013-03-19 20:02:54

回答

8

这是一个mod_fcgid超时,而不是PHP超时。查看mod_fcgid documentation以了解如何更改它,尤其是在FcgidIOTimeout

+1

以防万一它帮助任何人: 增加fcgid.conf中的FcgidIOTimeout值并重新启动Apache。 CentOS:/etc/httpd/conf.d/fcgid.conf Debian:/etc/apache2/mods-enabled/fcgid.conf – 2016-03-09 09:01:30

1

如果你通过你的cronjob中的http来访问它,那么它将作为一个网页请求,然后它可能会受到Apache超时的影响,因为在这个过程中涉及到apache。你可以使用php解释器直接运行php脚本来绕过apache

+0

你可以使用php解释器直接运行php脚本以绕过apache 我们该怎么做? – 2015-04-18 12:26:49

5

如果正确的构建不应该通过Apache来运行Cron脚本。您的错误表明您正在运行由mod_fcgi设置的超时。

+0

如果构建正确,Cron脚本不应该通过apache运行。 那么我们应该在哪里运行cron脚本? – 2015-04-18 12:25:18

+0

@FoysalVai通过控制台,类似于'php/path/to/php/script.php'的目录 – datasage 2015-04-18 19:05:23