Bu ileti, tek bir PHP isteğinin bellekte izin verilenden fazlasını tutmaya çalıştığı anlamına gelir. Sınır istek başınadır, sunucu başına değil: 256M'lik bir sınır, sunucuda 256M olduğu demek değildir.
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
134217728, 128M eder. İletideki sayı her zaman geçerli sınırdır, dolayısıyla onu hiç aramanız gerekmez.
Nereden yükseltilir
- EGPNL - sitenin PHP ayarları; doğru yer burasıdır, çünkü güncellemelerden sağ çıkar.
- php.ini -
memory_limit = 256M, havuzun tamamı için. - wp-config.php -
define("WP_MEMORY_LIMIT", "256M");yalnızca WordPress için.
512M üstündeki bir sınır neredeyse her zaman bir hatayı gizler. Bütün bir tabloyu bir diziye okumak ya da bir dosyayı akıtmak yerine tümüyle okumak, beslenmeye değil düzeltilmeye muhtaçtır.
Onu neyin yediğini bulun
echo round(memory_get_peak_usage(true)/1048576, 1) . ' MB';
Şunu yavaş sayfanın sonuna koyun, tepe değeri yazdırır. Sonra ikiye bölün: işin yarısını yoruma alın ve tepenin hangi yarıyı izlediğine bakın.
İki olağan sebep
- Sınırsız bir sorgu. Büyümüş bir tabloda LIMIT'siz bir SELECT. Onu sayfa sayfa dolaşın.
- Büyük bir dosya üzerinde bir görsel kitaplığı. 6000 piksellik bir fotoğraf bellekte, dosya boyutunun düşündürdüğünden çok daha pahalıdır; çünkü yüklendiği anda sıkıştırması açılmış hâldedir.
128M'de başarısız olup 512M'de çalışan bir zamanlanmış görev düzeltilmiş değildir. Veriler büyüdüğünde yine başarısız olacaktır, gecenin üçünde.