Pesan ini berarti satu permintaan PHP mencoba memegang lebih banyak memori daripada yang diizinkan. Batasnya per permintaan, bukan per server: batas 256M tidak berarti servernya punya 256M.
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
134217728 sama dengan 128M. Angka dalam pesan itu selalu batas yang sedang berlaku, jadi Anda tak pernah perlu mencarinya.
Di mana menaikkannya
- EGPNL - pengaturan PHP untuk situs itu; inilah tempat yang benar karena ia selamat dari pembaruan.
- php.ini -
memory_limit = 256M, untuk seluruh kolam. - wp-config.php -
define("WP_MEMORY_LIMIT", "256M");untuk WordPress saja.
Batas di atas 512M hampir selalu menyembunyikan sebuah cacat. Membaca satu tabel utuh ke dalam larik, atau satu berkas utuh alih-alih mengalirkannya, perlu diperbaiki, bukan diberi makan.
Temukan apa yang memakannya
echo round(memory_get_peak_usage(true)/1048576, 1) . ' MB';
Taruh itu di ujung halaman yang lambat, dan ia akan mencetak puncaknya. Lalu belah dua: jadikan komentar separuh pekerjaannya dan lihat puncaknya mengikuti separuh yang mana.
Dua sebab yang lazim
- Kueri tanpa batas. SELECT tanpa LIMIT pada tabel yang sudah membesar. Telusuri per halaman.
- Pustaka gambar pada berkas yang besar. Foto selebar 6000 piksel jauh lebih mahal di memori daripada yang disiratkan ukuran berkasnya, karena begitu dimuat ia dalam keadaan tak termampat.
Tugas terjadwal yang gagal di 128M dan jalan di 512M belumlah diperbaiki. Ia akan gagal lagi ketika datanya membesar, pukul tiga pagi.