SevkiBilge

PHP'de büyük veri kümelerini işlerken bellek sorununu nasıl aşarsınız?

FikretToptasTR
· 2 gün önce · 0 görüntülenme
Arkadaşlar merhaba,

Uzun zamandır PHP ile veri işleme projeleri yapıyorum ama özellikle son zamanlarda büyük veri kümeleriyle (örneğin 100.000+ satırlık CSV veya veritabanı sorgu sonuçları) çalışırken bellek limiti sorunuyla sık sık karşılaşmaya başladım. Normalde memory_limit değerini artırarak geçici çözümler buluyordum ama bu sefer işin içinden çıkamadım. Mesela bir döngü içinde 50.000 kaydı tek seferde çekip işlemeye kalktığımda script 256MB belleği bile aşıp patlıyor.

Ben genelde veritabanı sorgularında LIMIT ve OFFSET kullanarak sayfalama yapıyorum, ama bazen tüm veriyi tek seferde alıp toplu bir işlem yapmam gerekiyor. Örneğin bir raporda tüm kayıtları dolaşıp hesaplama yapmam lazım. Bu durumda sizce en sağlıklı yaklaşım nedir? Yoksa PHP'nin kendisi büyük veriler için mi yetersiz kalıyor, yoksa ben mi yanlış bir yöntem izliyorum?

Bir de özellikle generator (yield) kullanımı hakkında çok şey duydum ama henüz denemedim. Gerçekten bellek kullanımını ciddi anlamda düşürüyor mu? Yoksa hala verinin tamamı bellekte tutuluyor mu? Deneyimleyen varsa paylaşırsa çok sevinirim. Ayrıca Redis veya başka bir harici araç kullanmadan sadece PHP ile bu sorunu çözebilecek "pratik" bir yol var mı, yoksa illa bir kuyruk sistemi mi kurmalıyım? Tartışalım biraz.
0 yanıt

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

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