Bellek Yönetimi ve Performans İpuçları
Belleği erkenden serbest bırakın, büyük dizi kopyalarından kaçının ve büyük veri kümeleri için üreteçler kullanın.
Bellek Yönetimi ve Performans İpuçları, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
PHP Bellek Yönetimi
PHP, çöp toplama için döngü toplayıcıyla birlikte başvuru sayımı kullanır. Her istek yeni bir yığınla başlar; uzun süre çalışan işlemler (çalışan işlemler, Horizon) bellek sızıntılarını biriktirebilir.
memory_limit
php.ini dosyasında uygun bir bellek sınırı belirleyiniz. Bu sınırın aşılması ölümcül bir hataya neden olur.
# php.ini:
memory_limit = 256M
// Check at runtime:
echo memory_get_usage(true) / 1024 / 1024 . " MB";
echo memory_get_peak_usage(true) / 1024 / 1024 . " MB peak";Büyük Değişkenleri Kaldırma
Uzun bir işlev içinde büyük dizilere veya nesnelere artık gerek kalmadığında belleği açıkça serbest bırakınız.
<?php
$data = loadLargeDataset();
processData($data);
unset($data); // free immediately, do not wait for end of scope
gc_collect_cycles(); // force garbage collection if circular referencesBüyük Veri Kümeleri için Üreteçler
Her şeyi belleğe yüklemeden büyük dosyaları veya sorgu sonuçlarını satır satır işlemek için üreteçleri kullanınız.
<?php
function readCsvLines(string $file): Generator {
$fh = fopen($file, "r");
while (($line = fgetcsv($fh)) !== false) {
yield $line;
}
fclose($fh);
}
foreach (readCsvLines("large.csv") as $row) {
importRow($row);
}Büyük Dizileri Kopyalamaktan Kaçınma
PHP, diziler için yazma sırasında kopyalama yöntemini kullanır. Bir diziyi bir değişkene atamak, ikisinden biri değiştirilene kadar diziyi kopyalamaz. Değiştirme gerektiğinde büyük dizileri referansla geçiriniz.
<?php
function processArray(array &$data): void {
// & avoids a copy when the parameter is modified
}Döngülerde Dize Birleştirme
Bir döngüde birleştirme yaparak dize oluşturmak, çok büyük dizeler için verimsizdir. Bir dizi ve implode() kullanınız.
<?php
// Slow for large N:
$str = "";
foreach ($items as $item) $str .= $item->format()."\n";
// Faster:
$parts = [];
foreach ($items as $item) $parts[] = $item->format();
$str = implode("\n", $parts);Nesne Oluşturmayı Önbelleğe Alma
Nesneleri, özellikle kurucu mantığıyla birlikte, sıkı döngüler içinde örneklemek maliyetlidir. Mümkün olduğunda örnekleri önbelleğe alın veya küçük nesne yaklaşımını kullanın.
Yinelenen İşlev Çağrılarından Kaçının
Sonuç her yinelemede değişmiyorsa sabit işlev çağrılarını döngülerin dışına taşıyın.
<?php
// Slow:
for ($i = 0; $i < count($items); $i++) { ... }
// Fast (count() called once):
$n = count($items);
for ($i = 0; $i < $n; $i++) { ... }PHP-FPM İşçi Ayarları
PHP-FPM işçi sayısını kullanılabilir belleğe ve beklenen eşzamanlılık düzeyine göre yapılandırın. Yaklaşık kural: işçiler = RAM / (ortalama işçi bellek kullanımı).
OPcache ve Önceden Yükleme
OPcache'i (önceki derste ele alınmıştır) etkinleştirin ve sık kullanılan çatı sınıflarını önceden yükleyin. Böylece her istek için gereken ayrıştırma ve derleme yükü ortadan kalkar.
Önce Profil Çıkarın
Her zaman optimizasyon yapmadan önce profil çıkarın. Darboğaz olmayan kod üzerinde yapılan mikro optimizasyonlar zaman kaybettirir ve okunabilirliği azaltır. Gerçek yoğun yürütme yolunu bulmak için Xdebug veya Blackfire kullanın.
Özet
Büyük veri kümeleri için üreteçleri kullanın. İşiniz bittiğinde değişkenleri kaldırın. Büyük dizilerin kopyalarını oluşturmaktan kaçının. Sabit çağrıları döngülerin dışına taşıyın. Optimizasyon yapmadan önce gerçek darboğazları bulmak için Xdebug ile profil çıkarın.
Hızlı Kontrol
Büyük veri kümeleri için PHP üreteçlerinin temel yararı nedir?
Sıkça Sorulan Sorular
“Bellek Yönetimi ve Performans İpuçları” dersi ücretsiz mi?
Evet — “Bellek Yönetimi ve Performans İpuçları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Bellek Yönetimi ve Performans İpuçları” dersinde ne öğreneceğim?
Belleği erkenden serbest bırakın, büyük dizi kopyalarından kaçının ve büyük veri kümeleri için üreteçler kullanın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Bellek Yönetimi ve Performans İpuçları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Xdebug ile PHP Profilleme
- OPcache: Bayt Kodu Önbellekleme
- Veritabanı Sorgularını İyileştirme
- Bellek Yönetimi ve Performans İpuçları