'Memory Limit Exhausted' Hatası Nedir?
Hatanın Yaygın Nedenleri
1. Büyük Dosya Yüklemeleri:
PHP'nin varsayılan bellek sınırı, büyük dosyaların yüklenmesini engelleyebilir. Eğer kullanıcılar büyük resimler veya videolar yüklemeye çalışıyorsa, bu sınır kolayca aşılabilir.
2. Bellek Sızıntıları:
PHP'nin bazı script'leri, belleği düzgün şekilde serbest bırakmadığı zaman bellekte birikmeler oluşabilir. Bu, "memory leak" yani bellek sızıntısı adı verilen durumu yaratır ve sonunda bellek limiti aşılabilir.
3. Ağır Veritabanı Sorguları:
Eğer bir PHP script'i çok büyük bir veri kümesiyle çalışıyorsa ve veritabanı sorgusu yüksek bellek kullanıyorsa, bu da hataya yol açabilir. Özellikle, veritabanı bağlantıları uzun süre açık tutulursa, bellekte birikme olabilir.
4. Yüksek PHP Script'leri:
PHP script'lerinde döngüler, dosya işlemleri veya büyük veri manipülasyonları yapıyorsanız, bellek sınırına kolayca ulaşabilirsiniz. Özellikle bellek tüketimi yüksek işlemler yapılırken, PHP'nin varsayılan bellek sınırının yetersiz kalması muhtemeldir.
Bu Hata Nasıl Çözülür?
# 1. PHP Memory Limit Artırma:
php.ini Dosyasını Düzenlemek:
`php.ini` dosyasındaki `memory_limit` değerini artırabilirsiniz. Bu dosya, PHP'nin yapılandırma dosyasıdır ve buradaki değeri yükseltmek hatayı çözebilir.
memory_limit = 256M
Yukarıdaki kod, PHP'nin bellek limitini 256 MB olarak belirler. Eğer daha fazla bellek gerekiyorsa, bu değeri artırabilirsiniz.
.htaccess Dosyasını Kullanmak:
Eğer `php.ini` dosyasına erişiminiz yoksa, `.htaccess` dosyasını kullanarak da bellek limitini artırabilirsiniz.
php_value memory_limit 256M
PHP Script'inde Bellek Limitini Artırmak:
Bir script içerisinde doğrudan bellek limitini artırmak için `ini_set()` fonksiyonunu kullanabilirsiniz:
ini_set('memory_limit', '256M');
# 2. Bellek Sızıntılarını Önlemek:
- `unset()` Kullanmak:
Kullanılmayan değişkenleri bellekten temizlemek için `unset()` fonksiyonunu kullanın. Bu, belleğin gereksiz yere dolmasını engeller.
unset($largeVariable);
- Veri Yapılarını Optimizasyon:
Büyük veri yapılarını kullanırken, yalnızca gerekli verileri tutmaya özen gösterin. Gereksiz veri eklemeleri bellek sızıntılarına yol açabilir.
# 3. PHP Performansını Artırmaya Yönelik İpuçları:
- OPcache Kullanımı:
PHP'nin performansını artırmak için OPcache özelliğini etkinleştirebilirsiniz. OPcache, PHP dosyalarını önbelleğe alarak her seferinde yeniden derlenmesini engeller.
- Veritabanı İyileştirmeleri:
Veritabanı sorgularını optimize edin. Gereksiz büyük sorgulardan kaçının ve doğru indeksleri kullanarak sorgu sürelerini kısaltın.
- PHP 7 ve Üstü Kullanın:
PHP 7 ve üstü sürümler, daha hızlı bellek yönetimi sunar. Eski sürümlerden güncel sürümlere geçmek performansı ciddi şekilde artırabilir.