SevkiBilge

PHP'de büyük veri dosyalarını okumak için en verimli yöntem hangisi?

IhsanSendilMs
· 3 gün önce · 0 görüntülenme
Arkadaşlar selam, uzun zamandır PHP ile uğraşıyorum ve son zamanlarda büyük boyutlu CSV ve log dosyalarını işlemek zorunda kaldım. Mesela 500 MB'ın üzerinde bir CSV dosyasını okumaya kalktığımda, klasik file_get_contents veya file() fonksiyonlarıyla direkt patladı, bellek limiti aştı. Sonra biraz araştırma yapınca birkaç farklı yöntem buldum: fopen ile satır satır okumak, SplFileObject sınıfını kullanmak, hatta Generator kullanarak lazy loading mantığıyla dosyayı parça parça işlemek. Sizce hangisi gerçekten verimli? Özellikle bellek kullanımı açısından en optimum çözüm hangisi olur?

Kendi denemelerimde fopen + fgets kombinasyonu bana en sağlam gibi geldi, çünkü her seferinde sadece bir satırı bellekte tutuyor. Ama SplFileObject'ın de kendi içinde cursor mantığıyla çalıştığını ve hatta foreach ile doğrudan kullanılabildiğini gördüm. Hatta bazı kaynaklar, Generator oluşturup her yield'da bir satır döndürmenin, özellikle büyük veri setlerinde bellek yönetimini daha da iyileştirdiğini söylüyor. Siz bu konuda ne düşünüyorsunuz? Gerçekten bellek kullanımında ciddi bir fark var mı, yoksa abartılıyor mu?

Ayrıca, dosya boyutu 1-2 GB'a çıktığında işin içine dosyanın kendisini stream olarak işlemek mi giriyor? Örneğin, bir FTP'den veya uzak sunucudan büyük bir dosyayı indirmeden parça parça okumak mümkün mü? Ben genelde local dosyalarla uğraşıyorum ama bazen iş dağıtık sistemlere kayıyor. Sizin elinizde bu konuda uyguladığınız pratik bir yöntem ya da hazır bir kütüphane var mı? Yorumlarınızı merakla bekliyorum.
0 yanıt

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

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