【XAMPP】透過 PhpMyAdmin 匯入大檔案逾時辦法

使用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;



沒有留言:

張貼留言