2013-03-19 114 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