PHP'de Generator Kullanarak Büyük Veri Setlerini İşleme

  • Konbuyu başlatan Konbuyu başlatan sysuser
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 40

sysuser

PREMİUM
Katılım
9 Kas 2025
Mesajlar
174
Tepki puanı
4
Cinsiyet
Kadın

PHP'de Generator Kullanarak Büyük Veri Setlerini İşleme​


Milyonlarca satır içeren bir CSV dosyasını PHP ile okumak zorunda kaldığınızda tüm dosyayı belleğe almak çoğu zaman mümkün olmaz. Generator'lar bu sorunu zarif biçimde çözer.

Generator Nedir?​

Normal bir fonksiyon değer döndürüp sonlanır. Generator ise yield anahtar sözcüğüyle birden fazla değeri sırayla üretir ve her yield noktasında duraklar.

PHP:
function readLargeCSV(string $path): Generator {
    $handle = fopen($path, 'r');
    while (($line = fgets($handle)) !== false) {
        yield str_getcsv($line);
    }
    fclose($handle);
}

foreach (readLargeCSV('/data/users.csv') as $row) {
    processRow($row);
}

Bellek Kullanımı Farkı​

  • Klasik yöntemde 1 milyon satır yaklaşık 300–500 MB bellek tüketir
  • Generator yönteminde bellek kullanımı sabit kalır, satır sayısından bağımsızdır
  • PHP 5.5 ve üzerinde yield deyimi desteklenir

Dikkat Edilmesi Gerekenler​

Generator bir kez tüketilince yeniden kullanılamaz. Aynı veriyi tekrar gezmek gerekiyorsa fonksiyonu tekrar çağırın. Ayrıca yield from ile başka iterable'ları veya nested generator'ları devredebilirsiniz.

Büyük dosya işleme dışında sonsuz sayı dizileri üretmek, lazy pipeline oluşturmak veya coroutine benzeri yapılar kurmak için de generator'lardan yararlanabilirsiniz.
 
Geri
Üst