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.