Две правила, които трябва да следвате, когато създавате големи партиди за импортиране като това:
-
Деактивирайте регистрирането на SQL:(
$manager->getConnection()->getConfiguration()->setSQLLogger(null);
), за да избегнете огромна загуба на памет. -
Промивайте и почиствайте често, вместо само веднъж в края. Предлагам ви да добавите
if ($i % 25 == 0) { $manager->flush(); $manager->clear() }
вътре във вашия цикъл, за да измивате на всеки 25 INSERT.
РЕДАКТИРАНЕ: Едно последно нещо, което забравих:не дръжте обектите си в променливи, когато вече не се нуждаете от тях. Тук, във вашия цикъл, имате нужда само от текущия обект, който се обработва, така че не съхранявайте предишен обект в $coordinatesfrcity
масив. Това може да ви доведе до препълване на паметта, ако продължите да правите това.