Cara Mengatasi Error Maximum Execution Time Exceeded di PHP
Apa Artinya?
Error:
Fatal error: Maximum execution time of 30 seconds exceeded in /path/file.php on line XX
Artinya: PHP menghentikan eksekusi skrip karena melebihi batas waktu maksimal (default: 30 detik). Ini untuk mencegah script berjalan terlalu lama dan membebani server.
Penyebab Umum
- Proses terlalu berat (misalnya: pengolahan file besar, import data, crawling web, looping besar)
- Infinite loop (loop tidak pernah selesai)
- Koneksi lambat ke API, database, atau server lain
- Query berat tanpa indexing di database
Cara Mengatasinya
1. Tingkatkan Waktu Eksekusi di php.ini
Edit file php.ini
:
max_execution_time = 60
Atur jadi 60 detik (atau lebih sesuai kebutuhan).
Setelah itu, restart server:
sudo service apache2 restart
# atau
sudo systemctl restart php-fpm
2. Ubah Waktu Eksekusi di Baris Kode PHP
ini_set('max_execution_time', 60); // 60 detik
Tambahkan di awal file PHP (jika tidak bisa akses
php.ini
)
3. Gunakan Unlimited Execution Time (hati-hati!)
set_time_limit(0); // Tidak ada batas waktu
Hanya jika benar-benar diperlukan, misalnya saat import data besar.
4. Optimalkan Kode
- Gunakan pagination saat proses data besar
- Hindari looping besar yang tidak dibatasi
- Gunakan asynchronous request (misalnya: jalankan di background menggunakan queue)
- Gunakan progress bar + AJAX untuk proses berat di web
5. Gunakan ignore_user_abort()
Jika Perlu
Jika skrip harus tetap berjalan walau user menutup browser:
ignore_user_abort(true);
set_time_limit(0);
Contoh: Loop yang Butuh Waktu Lama
for ($i = 0; $i < 10000000; $i++) {
// proses berat
}
Solusi:
set_time_limit(300); // beri waktu 5 menit
Comments
Post a Comment