Duas regras a serem seguidas ao criar grandes importações em lote como esta:
-
Desabilitar log SQL:($manager->getConnection()->getConfiguration()->setSQLLogger(null);
) para evitar grandes perdas de memória.
-
Lave e limpe com frequência em vez de apenas uma vez no final. Eu sugiro que você adicioneif ($i % 25 == 0) { $manager->flush(); $manager->clear() }
dentro do seu loop, para liberar a cada 25 INSERTs.
EDITAR: Uma última coisa que esqueci:não mantenha suas entidades dentro de variáveis quando não precisar mais delas. Aqui, em seu loop, você só precisa da entidade atual que está sendo processada, portanto, não armazene a entidade anterior em um
$coordinatesfrcity
variedade. Isso pode levar a um estouro de memória se você continuar fazendo isso.