Podczas tworzenia dużych importów wsadowych należy przestrzegać dwóch zasad:
-
Wyłącz rejestrowanie SQL:(
$manager->getConnection()->getConfiguration()->setSQLLogger(null);
), aby uniknąć ogromnej utraty pamięci. -
Płukać i czyścić często, a nie tylko raz na końcu. Proponuję dodać
if ($i % 25 == 0) { $manager->flush(); $manager->clear() }
wewnątrz pętli, aby opróżnić co 25 wstawek.
EDYTUJ: Ostatnia rzecz, o której zapomniałem:nie trzymaj swoich encji w zmiennych, gdy już ich nie potrzebujesz. Tutaj, w swojej pętli, potrzebujesz tylko bieżącej encji, która jest przetwarzana, więc nie przechowuj poprzedniej encji w $coordinatesfrcity
szyk. Może to doprowadzić do przepełnienia pamięci, jeśli będziesz to robić dalej.