SevkiBilge

PHP ile bin kayıtlı CSV dosyasını hızlı okuma yöntemi nedir?

MustafaUnalX
· 2 gün önce · 0 görüntülenme
Arkadaşlar merhaba, uzun zamandır PHP ile uğraşıyorum ama geçenlerde karşılaştığım bir performans sorunu beni biraz düşündürdü. Elimde yaklaşık 10.000 satırlık bir CSV dosyası var ve bu dosyayı düzenli olarak okuyup veritabanına aktarmam gerekiyor. Normalde fgetcsv() kullanıyordum, ama dosya büyüdükçe işlem süresi ciddi anlamda artmaya başladı. Özellikle 1000 kayıt gibi bir eşikte bile, her seferinde 1-2 saniye sürmesi can sıkıcı hale geldi. Belki 1000 kayıt küçük gelebilir, ama projede bu işlemi sık sık yapacağım için hız kritik.

Aklıma ilk gelen çözüm, dosyayı parça parça okumak oldu. Mesela SplFileObject kullanarak satır satır geçmek daha mı mantıklı? Yoksa bellek kullanımını optimize etmek için file() fonksiyonunu kullanıp tüm dosyayı diziye almak, sonra array_chunk ile bölmek daha mı hızlı olur? Bir de bunun yanında, CSV dosyasında bazı alanlar boş olabiliyor, bu da okuma sırasında ekstra kontroller gerektiriyor. Siz bu tür durumlarda hangi yöntemi tercih ediyorsunuz? Özellikle PHP’nin dahili fonksiyonları yeterli mi, yoksa özel bir kütüphane (League CSV gibi) kullanmak şart mı? Ben şu an için sadece fgetcsv ile idare ediyorum, ama belki sizin önerilerinizle işleri hızlandırabilirim.

Bir de merak ettiğim nokta, dosya işleme sırasında bellek yönetimi nasıl olmalı? 1000 kayıt için belki sorun yok, ama ileride 100 bin kayıtlı dosyalarla uğraşmam gerekebilir. O zaman memory_limit ayarlarını zorlamadan nasıl bir strateji izlemeliyim? Deneyimlerinizi ve varsa kod örneklerinizi paylaşırsanız çok sevinirim. Herkese kolay gelsin!
0 yanıt

Henüz yanıt bulunmuyor. İlk yanıtlayan siz olun!

Yanıt yazmak için giriş yapın.