Saturday, June 14, 2025

Cara Mengatasi Error Allowed Memory Size Exhausted di PHP

 


 Apa Itu Error Ini?

Error:

Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

Artinya: PHP kehabisan memori saat mengeksekusi script, dan melebihi batas maksimal memori (memory_limit) yang diizinkan dalam konfigurasi PHP.

 Penyebab Umum

  1. File terlalu besar diproses (gambar, CSV, XML, JSON, dll)
  2. Loop tak terkendali atau rekursi terlalu dalam
  3. Query database yang menghasilkan data sangat banyak
  4. Framework/Plugin/Library yang boros memori
  5. Tidak ada batasan dalam pengolahan data (misalnya membaca seluruh file ke memori sekaligus)

 Cara Mengatasinya

1. Tingkatkan Batas Memori di php.ini

Buka file konfigurasi PHP:

memory_limit = 256M

Contoh: ubah dari 128M ke 512M

Setelah itu, restart web server:

sudo service apache2 restart
# atau
sudo systemctl restart php-fpm

2. Setel memory_limit di .htaccess (untuk shared hosting)

php_value memory_limit 256M

3. Setel Langsung di Script PHP (darurat atau hanya satu halaman)

ini_set('memory_limit', '256M');

 Hanya berpengaruh jika konfigurasi server mengizinkan perubahan ini.

4. Gunakan CLI Flag Saat Menjalankan Script via Terminal

php -d memory_limit=512M script.php

5. Optimalkan Kode

Jika error tetap muncul walau sudah menambah memori, itu tandanya ada masalah dalam kode. Contoh solusi:

  • Jangan load seluruh file ke memori:
    //  Salah: membaca seluruh file sekaligus
    $data = file_get_contents("data.csv");
    
    //  Benar: baca baris per baris
    $handle = fopen("data.csv", "r");
    while (($line = fgets($handle)) !== false) {
        // proses baris
    }
    fclose($handle);
    
  • Gunakan LIMIT dalam query database
  • Hindari array besar tak terkendali
  • Gunakan generator (yield) untuk pengolahan data besar
Posted in 

0 comments:

Post a Comment