¿Qué es el error 'Maximum Execution Time Exceeded' en PHP?
El error Fatal error: Maximum execution time of 30 seconds exceeded es uno de los problemas más comunes a los que se enfrentan los desarrolladores web. Ocurre cuando un script de PHP tarda más tiempo del permitido por defecto (generalmente 30 segundos) en completar su tarea, lo que obliga al servidor a interrumpir la ejecución de forma abrupta para proteger los recursos del sistema.
Causas principales del error
Existen diversos motivos por los cuales un script puede exceder el tiempo límite de ejecución en PHP. Identificar la causa raíz te ayudará a elegir la mejor solución para tu proyecto:
- Consultas a bases de datos mal optimizadas o con una cantidad masiva de registros.
- Bucles infinitos o bucles con una lógica ineficiente en el código fuente.
- Procesamiento pesado de archivos grandes, como imágenes o importaciones masivas en CSV/XML.
- Conexiones lentas a APIs de terceros o servicios externos que tardan en responder.
- Límites de memoria RAM insuficientes para procesar la tarea requerida.
Método 1: Aumentar el tiempo de ejecución mediante php.ini
La forma más limpia y recomendada para servidores propios o VPS es modificar el archivo de configuración global de PHP, conocido como php.ini. Sigue estos pasos para aplicar el cambio:
- Localiza la ruta de tu archivo
php.iniejecutando un script conphpinfo();o desde la terminal. - Abre el archivo
php.iniutilizando un editor de texto con privilegios de administrador. - Busca la directiva
max_execution_time. Por defecto suele estar configurada en 30 segundos. - Modifica el valor al tiempo necesario en segundos. Por ejemplo, para aumentarlo a 300 segundos (5 minutos), escribe:
max_execution_time = 300 - Guarda los cambios y reinicia tu servidor web (Apache o Nginx) para aplicar la nueva configuración.
Método 2: Modificar el tiempo límite directamente en el código PHP
Si no tienes acceso al archivo php.ini (por ejemplo, en un servicio de hosting compartido), puedes alterar este límite de forma dinámica desde el propio script PHP utilizando la función set_time_limit().
Inserta la siguiente línea al principio del archivo PHP que genera el error:
set_time_limit(300);También puedes utilizar la función ini_set() para lograr un resultado similar:
ini_set('max_execution_time', '300');Nota: Si deseas eliminar completamente el límite de tiempo de ejecución (no recomendado por motivos de seguridad), puedes establecer el valor en 0, de la siguiente manera: set_time_limit(0);.
Método 3: Configurar el archivo .htaccess en servidores Apache
Si tu sitio web corre sobre un servidor Apache y cuentas con soporte para archivos de configuración local, puedes añadir una regla específica en el archivo .htaccess ubicado en la raíz de tu proyecto.
- Accede a tu servidor mediante FTP o el Administrador de Archivos de tu panel de control.
- Localiza el archivo
.htaccess(asegúrate de mostrar los archivos ocultos si es necesario). - Agrega la siguiente línea al final del archivo:
php_value max_execution_time 300 - Guarda los cambios y recarga tu página web para verificar que el error haya desaparecido.