Мне удалось импортировать этот файл с минимальным использованием памяти и времени с помощью LazyCollection. Вот пример кода, как я это сделал:
LazyCollection::make(function () use (&$csv_data,$key_count){
$datas = $csv_data;
foreach($datas as $line)
{
if(count($line)==$key_count && !containsOnlyNull($line)){
yield $line;
}
}
})
->chunk(1000)
->each(function ($lines) use (&$import_info, $user_id, $country, $csv_fields, $key, $total, $products,$allProducts, $sync_id,$import_id){
}):