2011-05-31 91 views
2

我有一個非常痛苦的慢腳本,它從MySQL獲取大量數據,並創建一個大型報告,它在最後以應用程序/強制下載的形式提供給用戶。長話短說,在生產服務器上,它在大約30秒(相當一致)之後保持終止,並且將空文件轉出。在開發服務器上它工作正常,但執行時間明顯更長 - 大約90秒。爲了'安全',我將我的php.ini文件設置爲max_execution_time = 2000,並在腳本的開始處運行set_time_limit(4000)(數字超過預期的完成時間,但只是爲了確定;))。PHP set_time_limit沒有影響

什麼可能導致我的網絡服務器忽略我設置的時間限制,並在30秒後退出?

編輯:我確切知道的一件事是,它需要8-9秒的MySQL部分完成,並且它每次都成功通過該點。

+0

怎麼樣上的MySQL側的時間限制?並在php.ini中的mysql功能? – Fosco 2011-05-31 20:22:23

+0

檢查您的內存限制。你可能會耗盡你的最大記憶。 – 2011-05-31 20:23:06

+0

檢查'phpinfo()'輸出以查看max_execution_time的「本地」設置。 PHP可以有多個.ini文件(用於命令行和基於Web的執行),並且可能修改了錯誤的文件。 – 2011-05-31 20:29:15

回答

7

也許PHP safe_mode。

嘗試做一個

die(ini_get('max_execution_time')) 

讀值你叫set_time_limit(0);後,看是否真正得到它overwrited。

如果它被overwrited爲0,你的劇本還是會死那麼原因可能是別的地方在你的代碼

+1

您可能的意思是'max_execution_time' http://php.net/info.configuration#ini.max-execution-time編輯:我的意思是'safe_mode':X http://php.net/ini.sect.safe-mode #ini.safe-mode – KingCrunch 2011-05-31 20:24:04

+0

safe_mode似乎關閉。 memory_limit已成功設置爲-1。 – SaltyNuts 2011-05-31 20:29:49

+0

@salty:對不起,我的意思是max_execution_time。 +1 @ @king更正 – dynamic 2011-05-31 20:30:26