Laravel Excel Import 記憶體不夠問題
大量資料匯入實出現 Allowed memory size of 1073741824 bytes exhausted 錯誤。
解法參考官網說明,載入並實做 Maatwebsite\Excel\Concerns\WithChunkReading 這個 class,並加上 chunkSize 方法,如下:
解法參考官網說明,載入並實做 Maatwebsite\Excel\Concerns\WithChunkReading 這個 class,並加上 chunkSize 方法,如下:
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithChunkReading;
class UsersImport implements ToCollection, WithChunkReading
{
public function collection(Collection $rows)
{
$rows->each(function ($row, $key) {
if ($key < 1 && $row[0] == '欄位標題') {
return true;
}
});
...
}
public function chunkSize(): int
{
return 1000;
}
}
要特別注意第 9 行的判斷,如果使用 chunkSize 後每 1000 筆的第 1 筆都會被跳過,所以要多加上標題內容的判斷,以避免有資料沒有匯入。

留言
張貼留言