Dua aturan yang harus diikuti saat Anda membuat impor batch besar seperti ini:
-
Nonaktifkan SQL Logging:(
$manager->getConnection()->getConfiguration()->setSQLLogger(null);
) untuk menghindari kehilangan memori yang besar. -
Siram dan bersihkan sesering mungkin alih-alih hanya sekali di akhir. Saya sarankan Anda menambahkan
if ($i % 25 == 0) { $manager->flush(); $manager->clear() }
di dalam loop Anda, untuk menyiram setiap 25 INSERT.
EDIT: Satu hal terakhir yang saya lupa:jangan simpan entitas Anda di dalam variabel saat Anda tidak membutuhkannya lagi. Di sini, di loop Anda, Anda hanya memerlukan entitas saat ini yang sedang diproses, jadi jangan simpan entitas sebelumnya di $coordinatesfrcity
Himpunan. Hal ini dapat menyebabkan memori Anda meluap jika Anda terus melakukannya.