現在有個需求,要把excel數據導入到數據表中,但數據量比較大,最多的時候一次要導入幾十W條數據,導入的數據不是直接寫db的,是走接口的,接口一次性愛最多處理1000條,耗時比較長,現在有個想法,想把這個做成任務式的導入,每次導入就是創建一個導入任務,把所有任務做成隊列,依次完成導入任務,有什麼好的方法和建議
現在有個需求,要把excel數據導入到數據表中,但數據量比較大,最多的時候一次要導入幾十W條數據,導入的數據不是直接寫db的,是走接口的,接口一次性愛最多處理1000條,耗時比較長,現在有個想法,想把這個做成任務式的導入,每次導入就是創建一個導入任務,把所有任務做成隊列,依次完成導入任務,有什麼好的方法和建議
你的想法很好,可惜PHP不適合做這種事情,建議用Java之類的語言來實現你的想法。
PHP有了任務,直接把任務參數提交到資料庫。
Java在後台每100ms存取一次資料庫,看看有沒有任務,有就處理。
php預設30秒 ;你可以加個set_time_limit(99999999);
幾十萬資料 應該是不要1分鐘就倒完了
Crontab + task list 做後台非同步任務,很適合這種場景
mysql load data infile 將資料快速匯入到臨時表
php守護程式分批將資料往介面同步(或crontab寫入定時任務)
php拼接成sql,直接mysql後台source導入
最好是分段導入,不要一次導入