Fatal error: Maximum execution time of 120 seconds exceeded in E:\xampp\htdocs\stock\lib\mysqli.php on line 512
參考 :
# Maximum execution time in phpMyadmin
按 XAMPP 的 Apache 的 Config 鈕, 選 PHP (php.ini) 檢查 php.ini 設定, 發現 max_execution_time 早已設置為 5000 秒 (在第 383 行左右) 了啊, 怎麼會固定 120 秒就逾時呢?
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 5000
瀏覽 http://localhost/dashboard/phpinfo.php 檢查 Loaded Configuration File 項目確實載入的設定檔為 E:\xampp\php\php.ini 沒錯, 照理講應該是 5000 秒才會逾時啊. 我把 XAMPP 關掉重開, 甚至電腦重開機都一樣無效, 傷腦筋.
最後在下面這篇看到 set_time_limit() 函數可用來指定一個 PHP 程式的最長執行時間 (與 php.ini 的 max_execution_time 作用一樣, 只是作用在單一程式) :
# PHP超過最常執行時間(Fatal error: Maximum execution time of 30 seconds exceeded)
# Fatal error: Maximum execution time of 30 seconds exceeded when try to open phpmyadmin
# Fatal error: Maximum execution time of 30 seconds exceeded when try to open phpmyadmin
這讓我想起之前好像有測試過 ini_set() 這個變更 php.ini 設定的函數, 檢查程式開始處果然發現這個測試過後忘記拿掉的程式碼, 設定值剛好就是 120 秒, 難怪!
@ini_set("max_execution_time","120");拿掉這行後再次執行爬蟲程式就沒有逾時問題了 (第一次跑花了 270 秒, 因為每一筆都要 create table 三次, 後續大都是 update 運算就不需要這麼久了, 大約 23 秒).
注意, set_time_limit(0) 是設定此程式不受逾時限制.
以上紀錄希望提醒自己以後別再犯這種烏龍錯誤了.
沒有留言 :
張貼留言