首頁  >  文章  >  後端開發  >  PHP執行超時30秒報錯如何解決

PHP執行超時30秒報錯如何解決

小云云
小云云原創
2018-03-13 14:08:5113989瀏覽
推薦手冊php完全自學手冊

#當你在做一個抓取程式的時候,php空白了好長一段時間然後報出現如下這個錯誤提示:

Fatal error: Maximum execution time of 30 seconds exceeded in ......

很簡單,意思是說腳本執行時間超過了30秒的上限。

這個錯誤以前常常碰到,通常都直接在頁頭加個 set_time_limit(0) 處理,今天刻意將這個錯誤的處理方法做總結。

經過查閱相關資料,對於PHP入門教程的學者們處理這個錯誤的方法基本上有三種。

(1)修改php的設定檔 php.ini 檔案(這個檔案預設安裝的話,在/etc/下面)

找到 php.ini 這個文件,然後在這個檔案中找到:

max_execution_time = 30 ;這一行,將數字 30 設定為你想要的值,單位是秒。

(也可以直接修改為:max_execution_time=0;//無限制)注意這樣修改後需要重新啟動伺服器。

例如你的是Apache,用service httpd restart

(2)使用 ini_set() 函數

對於那些無法修改 php.ini的朋友來說,你可以使用ini_set()這個函數來改變你的最大執行時間限制值,在程式的頂部加入如下程式碼:

ini_set('max_execution_time','100');

以上設定的為100秒,你也可以設定為0,那麼就是不限制執行的時間。

(3)使用set_time_limit() 函數

#在程式的頂端加入:set_time_limit(100);則表示最大執行時間設定為了100秒,當然也可以將參數設為0,意思同上。

set_time_limit 函數特別說明:void set_time_limit ( int $seconds ) 此函數的功能是設定允許腳本運作的時間,單位為秒。

如果超過了此設置,腳本返回一個致命的錯誤。

預設值為30秒,或是在php.ini的max_execution_time被定義的值,如果此值存在。當此函數被呼叫時, set_time_limit()會從零開始重新啟動逾時計數器。

換句話說,如果逾時預設是30秒,在腳本運行了25秒時呼叫 set_time_limit(20),那麼,腳本在逾時之前可執行總時間為45秒。當php運作於安全模式時,此功能不能生效。

除了關閉安全模式(在 php.ini 中將 safe_mode 設定為 off)或改變 php.ini 中的時間限制,沒有別的辦法。

案例:

如果沒有開啟安全模式,設定程式運行時間為25秒。

例如:

if(!ini_get('safe_mode')){
    set_time_limit(25);
}
相關文章推薦
1.讓php逾時的方法是什麼 
2.php請求介面逾時如何解決
相關影片推薦
1.獨孤九賤(4)_PHP影片教學

相關建議:

PHP執行外部程式實作方法        
詳解PHP執行外部程式的實作程式碼          
提高php執行效率的50個技巧
#

以上是PHP執行超時30秒報錯如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn