Makaleyi Dinle

PHP Memory Limit Nedir ve Nasıl Artırılır?

PHP Memory Limit Nedir ve Nasıl Artırılır?
İçerik Haritası

PHP uygulamanızda “Allowed memory size exhausted” hatası görüyorsanız, işlem için ayrılan bellek sınırına ulaşılmış demektir. PHP memory limit, bir betiğin kullanabileceği en yüksek bellek miktarını belirler ve uygulamanın kararlı çalışmasına yardımcı olur. Ancak düşük değer, büyük dosya yükleme, eklenti çalıştırma veya yoğun veri işleme sırasında sorun çıkarabilir. Önce mevcut sınırı ve hataya neden olan işlemi belirlemek, ardından sunucu ortamına uygun bir artırma yöntemi seçmek gerekir.

PHP Memory Limit Ne İşe Yarar?

PHP Memory Limit, bir PHP işleminin kullanabileceği en yüksek RAM miktarını belirler. Uygulama çalışırken oluşturulan değişkenler, yüklenen dosyalar ve kullanılan kütüphaneler bu kaynak alanından yararlanır. Tek bir PHP isteğinin sunucudaki belleği sınırsız biçimde tüketmesi engellenir.

Bu ayarın temel amacı, uygulama ile sunucu arasındaki kaynak kullanımını dengede tutmaktır. Limit çok düşükse normal işlemler bile tamamlanamayabilir; çok yüksekse hatalı veya yoğun bir işlem, diğer web süreçlerinin ihtiyaç duyduğu belleği azaltabilir. Belirlenen değer aşıldığında PHP işlemi durur ve genellikle “Allowed memory size exhausted” mesajı görüntülenir.

Bellek limiti yalnızca artırılması gereken bir sayı değildir. Uygulamanın ihtiyaç duyduğu kaynakla sunucunun toplam kapasitesi birlikte değerlendirilmelidir. Doğru değer, PHP işlemlerinin kararlı çalışmasını sağlarken gereksiz kaynak tüketiminin de önüne geçer.

Bellek Sınırı Aşımının Nedenleri Nelerdir?

PHP Memory Limit Nedir ve Nasıl Artırılır?

Bellek sınırı hatası her zaman limitin düşük olmasından kaynaklanmaz. PHP’nin çalıştırdığı işlem, mevcut veri hacmine göre normalden fazla bellek tüketebilir. Özellikle aynı istekte çok sayıda kaydı işlemek, büyük dosyaları belleğe almak veya karmaşık dönüşümler yapmak tüketimi hızla artırır. Bu nedenle sorun incelenirken hem uygulamanın yaptığı iş hem de işlenen verinin büyüklüğü değerlendirilmelidir.

  • Büyük veritabanı sonuçları: Çok sayıda kaydı tek seferde çekmek, sonuçların bellekte tutulmasına neden olur.
  • Dosya ve görsel işlemleri: Büyük dosyaları yüklemek, okumak ya da dönüştürmek geçici bellek kullanımını artırabilir.
  • Kontrolsüz döngüler: Sonlanmayan döngüler veya her adımda yeni veri biriktiren kodlar belleği tüketir.
  • Ağır eklenti ve kütüphaneler: Bazı bileşenler özellikle raporlama, önbellekleme veya içerik işleme sırasında yüksek kaynak kullanır.
Gözat :  HSTS Nedir ve Web Sitesinde Nasıl Etkinleştirilir?

Veri miktarı zamanla büyüdüğünde daha önce sorunsuz çalışan kod da sınırı aşabilir. Bellek serbest bırakılmadan yinelenen işlemler yapılması, tek isteğin toplam tüketimini yükseltir. Bu kök nedenler ayrıştırılmadan yalnızca limiti artırmak, sorunu geçici olarak gizleyebilir.

PHP Memory Limit Nasıl Kontrol Edilir?

Geçerli bellek sınırını öğrenmenin en pratik yolu, PHP yapılandırmasını çalışma ortamında görüntülemektir. Bunun için küçük bir PHP dosyasına memory_limit değerini yazdıran bir kontrol eklenebilir:

<?php echo ini_get('memory_limit'); ?>

Bu değer, uygulamanın çalıştığı PHP ortamında tanımlanan limiti gösterir. Komut satırında kullanılan PHP ile web sunucusunun kullandığı PHP sürümü veya yapılandırması farklı olabileceğinden, iki ortamın sonucu aynı olmayabilir.

Sunucuya erişim varsa php -i | grep memory_limit komutu da kullanılabilir. Ayrıca PHP bilgi ekranındaki memory_limit satırı mevcut değeri ve yapılandırma kaynağını incelemeye yardımcı olur. Değişiklik yapmadan önce kontrolü doğrudan hatanın oluştuğu çalışma ortamında gerçekleştirmek, yanlış bir değere göre işlem yapılmasını önler.

Bellek Limiti Artırma Yöntemleri Nelerdir?

Limit artırma işlemi, PHP’nin nasıl çalıştırıldığına ve sunucu yapılandırmasına göre değişir. Bu nedenle tek bir dosyada yapılan değişiklik her ortamda geçerli olmayabilir. Öncelikle uygulamanın kullandığı yapılandırma katmanı belirlenmeli, ardından yeni değer tanımlanmalıdır. En kritik ayar memory_limit değeridir; ancak bu değer yükseltilmeden önce sunucunun kullanılabilir RAM miktarı da dikkate alınmalıdır. Uygulamanın barındırıldığı ortam ve sunucuya erişim düzeyi, hangi yöntemin kullanılabileceğini doğrudan belirler.

  • php.ini: Sunucuya erişiminiz varsa ilgili PHP sürümünün yapılandırma dosyasında `memory_limit` satırını düzenleyebilirsiniz. Değişikliğin etkinleşmesi için PHP-FPM veya web sunucusu yeniden başlatılmalıdır.
  • .htaccess: Apache ve uygun sunucu yapılandırmalarında `php_value memory_limit` tanımı kullanılabilir. Sağlayıcı bu yöntemi engelliyorsa değişiklik uygulanmaz.
  • Hosting paneli: cPanel veya benzeri panellerde PHP ayarları bölümünden limit seçilebilir. Bu seçenek, genellikle yalnızca hosting sağlayıcısının izin verdiği aralıkta çalışır.
  • Kod üzerinden ayarlama: `ini_set()` bazı çalışma ortamlarında geçici değişiklik sağlayabilir; sunucu tarafından kısıtlanmışsa etkisiz kalır.
Gözat :  Alan Adı (Domain) ve Hosting Nedir? Yeni Başlayanlar İçin

Uygun yöntem belirlendikten sonra tanımlanan değerin sunucu tarafından kabul edilip edilmediği kontrol edilmelidir. Değişiklikten sonra yeni değer yeniden kontrol edilmelidir. Limit yükselmesine rağmen hata sürüyorsa sorun yalnızca bellek miktarı olmayabilir; uygulamanın veri işleme biçimi ve kaynak tüketen kodlar da incelenmelidir.

Bu inceleme sırasında gereksiz sorgular, büyük veri kümelerinin aynı anda işlenmesi ve kaynak tüketen kodlar gözden geçirilmelidir. Yalnızca limiti artırmak yerine, hataya neden olan temel kaynak tüketimi de azaltılabilir.

İçeriği Paylaş :
Picture of Dizayn16 Ekibi
Dizayn16 Ekibi

Bir websitesine mi ihtiyacınız var ?

Bizimle iletişime geçin!

WhatsApp WhatsApp Hattı
Hemen Ara 0536 775 63 88