2012-04-19 48 views
2

我有一個PHP腳本,當通過瀏覽器調用時,它在60秒後超時。我已修改httpd.conf並將Timeout指令設置爲300.我已將所有PHP超時設置修改爲延長超過60秒。當我從命令行運行腳本時,它會完成。當我每次在60秒後通過瀏覽器執行時,POOF超時。Apache和PHP超時 - 擱淺。

我也檢查了任何.htaccess文件中超時指令的存在。沒有什麼..我完全難住。

我也在PHP代碼中強制set_time_limit(0)。

我一直在挖掘和測試一個星期,並用盡我的知識。任何幫助是極大的讚賞。

+0

我正在處理一些有點慢的問題,並且在我的循環中,我重新聲明瞭'set_time_limit(0)'..出於某種原因,在那之後使腳本不能超時 - 這很奇怪。 – Blake 2012-04-19 16:16:17

+0

確保這兩種情況下使用完全相同的php.ini配置? – Hajo 2012-04-19 16:18:12

+0

此外,如果你使用安全模式,那麼你不能改變max_execution_time – 2012-04-19 16:21:18

回答

0

有很多地方可以設置maxtime。如果您正在使用FastCGI,尤其是諸如Virtualmin之類的東西,那麼除非您有權訪問,否則還有一組額外的max_execution_time設置對您而言是隱藏的。

總之,你需要找出所有的地方,給你的PHP堆棧設置,可以有一個執行時間限制,出現的那些價值觀,重新啓動服務器,然後做

set_time_limit(0); 

好的措施。

沒有關於您的特定設置的更多信息,以及我在處理PHP執行時間掛斷方面的經驗,這是我能告訴你的最多。

3

您需要確保在PHP和Apache中設置了更高的超時限制。

如果您在php.ini中設置了較高的max_execution_time,那麼您的腳本不會超時,但是,如果您沒有定期將腳本結果的輸出結果刷新到瀏覽器,腳本可能會超時由於網絡超時,Apache結束。

在httpd.conf做:

Timeout 216000 

在php.ini做:

max_execution_time = 0 

(將其設置爲0時永不超時,就像一個CLI(命令行)腳本)。

確保您完成後重新啓動Apache!大多數Linux發行版的,你可以通過發出命令(如根)做到這一點:

service httpd restart 

希望這有助於!

+0

順便說一句,請注意,根據建議使用腳本set_time_limit(0)下面只會在你的php環境不安全的情況下工作。您可以通過使用phpinfo()運行腳本來檢查您的php變量;在線上。 – 2013-11-28 13:58:16