Benim PHP uygulama kayıtları alabilirsiniz bir ithalat komut dosyası vardır.
Şu anda, bir CSV dosyası ithal edilmektedir. Bu fgetcsv kullanarak bir anda CSV dosyası, bir satır her satırı okuyor, ve her bir hat için veritabanı sorguları bu kaydın üzerinde a lot işleme yapıyor, ve sonra bir sonraki satıra geçmeden . Bu daha fazla bellek biriken tutmak gerekmez.
Yaklaşık 2500 kayıtları ithal sonra, PHP bellek limitini (132 MB ya da öylesine) üzerinde çalıştırmak olduğunu söyleyerek, ölür.
Dize karşılaştırmaları, farklarını, vb Bunun üzerine faaliyet kodunun büyük miktarda var ve bir 'küçük çoğaltılması ile gelmek zor olacak bir çok şey yok olur, diğer işleme - CSV dosyası kendisi megs sadece bir çift örnek '.
Böyle bir sorunu bulma ve sabitleme gitmek için bazı iyi yolları nelerdir?
Cause of problem found strong>
I have a debug class which logs all my database queries during runtime. So those strings of SQL, some 30KB long, were staying in memory. I realise this isn't suitable for scripts designed to run for a long time.
There may be other sources of memory leaks, but I am fairly sure this is the cause of my problem.