2012-07-03 106 views
1

我有一個運行循環的PHP腳本,可能會持續數小時。但約50分鐘後,我收到以下錯誤,雖然劇本是遠遠超出60秒時:最大執行時間PHP錯誤

Fatal error: Maximum execution time of 60 seconds exceeded in /path/script.php on line 275

通過腳本失敗時的內存使用量是11359848個字節 - 10.8336 MB。 任何想法可能會導致劇本跳出這樣的事情?

+0

什麼是script.php。我的意思是你在script.php中進行數據訪問 –

+0

@DigitalAssets:*是,*你。 – ThiefMaster

+0

您是從命令行還是通過網絡服務器和遠程Web瀏覽器運行此腳本? – jedwards

回答

6

最大執行時間不是實時的,而是CPU時間。

因此,如果發送例如一個需要10個小時完成的HTTP請求(即您等待I/O),您可以輕鬆地保持在60秒的限制內。但是,如果嘗試使用蠻力破解哈希(即腳本實際上正在做某事的某些事情),那麼在實時達到幾乎60秒之後,您將達到時間限制。

你的問題的解決方案很簡單:set_time_limit(0);禁用時間限制,除非PHP在safe_mode設置運行,但如果是這樣的話它的時間機會託管公司。

+0

我敢肯定,除此之外還有更多,至少如果通過網絡服務器和瀏覽器訪問腳本。如果我記得,還有其他一些事情,如斷開TCP會停止腳本。 – jedwards

+0

是的,但這些不會導致OP得到的錯誤。除此之外,如果他有一段腳本運行那麼久,我真的希望他不會通過網絡服務器運行它。 – ThiefMaster

+0

雙方同意。如果可以的話,補充說這個函數[在安全模式下沒有效果](http://php.net/manual/en/function.set-time-limit.php),也許指出php.ini選項。無論如何,+1 – jedwards