使用XAMPP架設網站、透過phpmyadmin匯入檔案時(預設檔案上限40 MB),當檔案過大會出現以下訊息
Script 執行已逾時,若要完成匯入,請重新上傳原來的檔案,匯入會繼續進行。
Script timeout passed, if you want to finish import, please resubmit same file and import will resume
除了拼命不斷繼續"重新上傳"的方法之外,
(以下的設定都是系統預設值,請自行改成所需要的大小及時間長度。)
自己匯入120萬筆左右的資料,檔案是約100MB的csv檔,總共需要50分鐘左右,
所以在時間設定上開闊大方一點,直接以1小時單位為起跳吧 ex:3600、7200
常見的解法是調整 php.ini 檔案 (預設在C:\xampp\php 底下)
upload_max_filesize=40M 最大允許上傳檔案的上限大小
post_max_size=40M PHP最大能透過POST方法接收的檔案大小,按理來說不會比upload_max_filesize還大。
以上兩項都調整大一點後,上傳檔案的容量上限增加了
memory_limit=512M 執行一個script最大能占用的記憶體空間大小
max_execution_time=120 執行一個script最大占用的時間,單位秒數。設為0表無上限
max_input_time=60 每個script在處理解析input資料時的花費上限時間,單位秒數。設為0表無上限、設為-1表示無限制、使用max_execution_time所設定的時間。
調整後重開Apache服務
設好這些後,再重新上傳一次,還是遇到相同問題。
因為剛剛只是調整"對PHP的設定",
但由於我們是透過PhpMyAdmin匯入,接下來還要調整"PhpMyAdmin的設定"。
解法1:
在 config.inc.php (預設在 C:\xampp\phpMyAdmin 底下)
新增一行設定,覆蓋掉預設設定
$cfg['ExecTimeLimit'] = 300;
解法2:
較不建議的方法,因註解上說明不要直接修改此份設定
改掉phpmyadmin原本的預設值
修改 config.default.php (預設在 C:\xampp\phpMyAdmin\libraries 底下)
$cfg['ExecTimeLimit'] = 300;
沒有留言:
張貼留言