{"id":1572,"date":"2026-06-13T00:00:39","date_gmt":"2026-06-12T17:00:39","guid":{"rendered":"https:\/\/www.jakhoster.com\/blog\/mengatasi-error-max-execution-time-xampp-multi-container\/"},"modified":"2026-06-13T00:00:39","modified_gmt":"2026-06-12T17:00:39","slug":"mengatasi-error-max-execution-time-xampp-multi-container","status":"publish","type":"post","link":"https:\/\/www.jakhoster.com\/blog\/mengatasi-error-max-execution-time-xampp-multi-container\/","title":{"rendered":"Studi Kasus: Mengatasi Error Max Execution Time XAMPP di Lingkungan Multi-Container untuk Aplikasi Laravel"},"content":{"rendered":"<h2>Pengantar Keberlangsungan Aplikasi<\/h2>\n<p>Ketika menerapkan aplikasi web berbasis Laravel di server lokal menggunakan XAMPP, kita sering menghadapi tantangan yang signifikan, terutama ketika beban server meningkat akibat traffic yang tinggi atau saat pengujian fungsionalitas kompleks. Siklus iterasi pengembangan bisa terhalang oleh munculnya error &#8216;max execution time exceeded&#8217;. Ini bukan hanya sekadar notifikasi mengganggu, tetapi dapat mempengaruhi produktivitas tim dan kecepatan pengembangan. Dalam artikel ini, kita akan membahas bagaimana mengatasi masalah ini dalam konteks lingkungan multi-container yang digunakan untuk pengembangan aplikasi Laravel.<\/p>\n<h2>Memahami Error Max Execution Time<\/h2>\n<p>Error max execution time adalah batas waktu maksimum yang diizinkan oleh PHP untuk menyelesaikan eksekusi skrip. Secara default, batas ini adalah 30 detik, tetapi dapat bervariasi tergantung pada konfigurasi server. Ketika skrip PHP tidak selesai dalam waktu tersebut, Anda akan menghadapi error ini, yang akan memengaruhi aplikasi Anda, terutama ketika menghadapi query database yang kompleks atau pemrosesan data yang intensif. Untuk mengatasi tantangan tersebut, pemahaman mendalam tentang <a href=\"https:\/\/www.jakhoster.com\/blog\/panduan-lengkap-xampp-teori-cara-instalasi-konfigurasi-dan-troubleshooting-server-lokal-untuk-developer\/\" target=\"_blank\" rel=\"noopener\">Panduan Lengkap XAMPP: Teori, Cara Instalasi, Konfigurasi, dan Troubleshooting Server Lokal untuk Developer<\/a> sangatlah krusial.<\/p>\n<h2>Penyebab Umum Masalah<\/h2>\n<p>Untuk memahami bagaimana mengatasi error ini, kita perlu terlebih dahulu mengetahui penyebab umumnya. Beberapa faktor yang berkontribusi antara lain:<\/p>\n<ul>\n<li><strong>Query Database yang Tidak Optimal:<\/strong> Query lama dan tidak terindeks dengan baik dapat menyebabkan waktu eksekusi yang panjang.<\/li>\n<li><strong>Proses yang Memerlukan Waktu Lama:<\/strong> Proses seperti pengunggahan file besar atau pemrosesan data dengan API eksternal juga dapat memicu masalah ini.<\/li>\n<li><strong>Konfigurasi Waktu Eksekusi yang Rendah:<\/strong> Pengaturan default PHP untuk &#8216;max_execution_time&#8217; yang terlalu ketat.<\/li>\n<\/ul>\n<h2>Menyiapkan Lingkungan Multi-Container dengan Docker<\/h2>\n<p>Sebelum kita menyelam lebih dalam ke solusi, mari kita pastikan bahwa kita memiliki lingkungan yang tepat. Dalam skenario ini, kita akan menggunakan Docker untuk menyiapkan lingkungan multi-container yang berisi container untuk aplikasi Laravel, database MariaDB, dan alat pengelolaan PHPMyAdmin.<\/p>\n<h3>Langkah 1: Membuat Dockerfile untuk Aplikasi Laravel<\/h3>\n<p>Mulailah dengan membuat Dockerfile untuk aplikasi Laravel Anda. <\/p>\n<p># Install dependencies<br \/>\nRUN apt-get update &#038;&#038; apt-get install -y \\<br \/>\n    libpng-dev \\<br \/>\n    libjpeg-dev \\<br \/>\n    libfreetype6-dev \\<br \/>\n    &#038;&#038; docker-php-ext-configure gd &#8211;with-freetype &#8211;with-jpeg \\<br \/>\n    &#038;&#038; docker-php-ext-install gd<\/p>\n<p># Set working directory<br \/>\nWORKDIR \/var\/www<\/p>\n<p># Copy application files<br \/>\nCOPY . .<\/p>\n<p># Install Composer<br \/>\nRUN curl -sS https:\/\/getcomposer.org\/installer | php &#8212; &#8211;install-dir=\/usr\/local\/bin &#8211;filename=composer<\/p>\n<p># Install application dependencies<br \/>\nRUN composer install<\/code><\/p>\n<p>Konfigurasi di atas akan menyiapkan image PHP yang menjalankan aplikasi Laravel. Pastikan Anda menyesuaikannya dengan kebutuhan spesifik aplikasi Anda.<\/p>\n<h3>Langkah 2: Menyiapkan Docker Compose<\/h3>\n<p>Agar semua container bisa berinteraksi, kita perlu file <code>docker-compose.yml<\/code> yang menyertakan konfigurasi untuk container Laravel, MariaDB, dan PHPMyAdmin.<br \/>\nservices:<br \/>\n  app:<br \/>\n    build:<br \/>\n      context: .<br \/>\n      dockerfile: Dockerfile<br \/>\n    volumes:<br \/>\n      &#8211; .:\/var\/www<br \/>\n    ports:<br \/>\n      &#8211; &#8216;8000:80&#8217;<\/p>\n<p>  db:<br \/>\n    image: mariadb:latest<br \/>\n    environment:<br \/>\n      MYSQL_ROOT_PASSWORD: root<br \/>\n      MYSQL_DATABASE: laravel<br \/>\n    ports:<br \/>\n      &#8211; &#8216;3306:3306&#8217;<\/p>\n<p>  phpmyadmin:<br \/>\n    image: phpmyadmin\/phpmyadmin<br \/>\n    environment:<br \/>\n      PMA_HOST: db<br \/>\n      PMA_USER: root<br \/>\n      PMA_PASSWORD: root<br \/>\n    ports:<br \/>\n      &#8211; &#8216;8080:80&#8217;<\/code><\/p>\n<p>File <code>docker-compose.yml<\/code> ini akan memungkinkan Anda untuk mengelola berbagai container dengan satu perintah dan memastikan komunikasi antar container berjalan lancar.<\/p>\n<h2>Pengaturan max_execution_time pada PHP<\/h2>\n<p>Setelah lingkungan kita siap, langkah berikutnya adalah memastikan bahwa kita telah mengonfigurasi waktu eksekusi yang sesuai untuk aplikasi kita. Anda dapat melakukannya dengan memodifikasi file <code>php.ini<\/code> dalam container aplikasi Laravel.<\/p>\n<h3>Langkah 1: Mencari File php.ini<\/h3>\n<p>Untuk mengubah <code>max_execution_time<\/code>, pertama-tama kita perlu menemukan file konfigurasi PHP <code>php.ini<\/code>. Dalam container Anda, jalankan perintah berikut:<\/p>\n<pre><code>docker exec -it <container_name> bash\nfind \/ -name php.ini<\/code><\/pre>\n<p>Perintah di atas akan membantu Anda menemukan lokasi file <code>php.ini<\/code> dalam container. Selanjutnya, kita perlu mengedit file tersebut.<\/p>\n<h3>Langkah 2: Mengedit file php.ini<\/h3>\n<p>Setelah menemukan lokasi file <code>php.ini<\/code>, buka file tersebut dengan editor favorit Anda. Untuk mengeditnya, Anda bisa menggunakan <code>nano<\/code>:<\/p>\n<pre><code>nano \/path\/to\/php.ini<\/code><\/pre>\n<p>Cari baris yang mengandung <code>max_execution_time<\/code>. Anda mungkin menemukan baris ini:<\/p>\n<pre><code>;max_execution_time = 30<\/code><\/pre>\n<p>Ubah angka 30 menjadi waktu sesuai kebutuhan aplikasi Anda. Misalnya:<\/p>\n<pre><code>max_execution_time = 120<\/code><\/pre>\n<p>Setelah mengubah, simpan file tersebut dan keluar dari editor.<\/p>\n<h3>Langkah 3: Restart Container<\/h3>\n<p>Setelah perubahan, restart container aplikasi Anda agar perubahan dapat diterapkan:<\/p>\n<pre><code>docker-compose restart app<\/code><\/pre>\n<h2>Optimasi Kode dan Query untuk Mengurangi Waktu Eksekusi<\/h2>\n<p>Selain mengkonfigurasi waktu eksekusi, penting juga untuk melakukan optimasi pada kode aplikasi dan query database Anda.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pelajari cara praktis dan mendalam mengatasi error max execution time di XAMPP pada server dengan arsitektur multi-container. Tempuh langkah demi langkah untuk optimasi dalam pengembangan aplikasi Laravel.<\/p>\n","protected":false},"author":2,"featured_media":1571,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-1572","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-xampp"],"_links":{"self":[{"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/posts\/1572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/comments?post=1572"}],"version-history":[{"count":0,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/posts\/1572\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/media\/1571"}],"wp:attachment":[{"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/media?parent=1572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/categories?post=1572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jakhoster.com\/blog\/wp-json\/wp\/v2\/tags?post=1572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}