Introducción al Error Maximum Execution Time Exceeded
Uno de los problemas más frustrantes a los que se enfrentan los desarrolladores web al trabajar con scripts pesados o consultas complejas es el error Fatal error: Maximum execution time of 30 seconds exceeded en PHP. Este fallo interrumpe la ejecución del código cuando un script tarda más del tiempo predeterminado en completarse.
Causas Principales del Problema
El servidor web, por motivos de seguridad y rendimiento, limita el tiempo que un script puede ejecutarse de manera continua. Las causas más comunes incluyen:
- Consultas a bases de datos mal optimizadas que devuelven grandes volúmenes de datos.
- Procesamiento masivo de imágenes, archivos CSV o importaciones pesadas.
- Bucles infinitos o lógica de programación ineficiente en el código fuente.
- Configuración predeterminada restrictiva en el archivo
php.ini.
Método 1: Aumentar el límite de tiempo en el archivo php.ini
La solución definitiva a nivel de servidor consiste en modificar el archivo de configuración global de PHP.
- Localiza tu archivo
php.inien tu servidor o entorno local (como XAMPP o WAMP). - Ábrelo con un editor de texto con permisos de administrador.
- Busca la directiva
max_execution_time. - Cambia el valor por defecto (generalmente 30) a un número mayor o cero para eliminar el límite:
max_execution_time = 300. - Guarda los cambios y reinicia tu servidor web (Apache o Nginx).
Método 2: Modificar el tiempo de ejecución mediante .htaccess
Si estás utilizando un servicio de hosting compartido y no tienes acceso al archivo php.ini, puedes utilizar el archivo de configuración de Apache.
- Accede a la raíz de tu proyecto mediante FTP o el explorador de archivos de tu hosting.
- Busca o crea el archivo
.htaccess. - Agrega la siguiente línea de código 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.
Método 3: Cambiar el tiempo de ejecución directamente en el Código PHP
También es posible declarar el límite de tiempo de forma dinámica únicamente en el script específico que lo requiera mediante una función nativa.
- Abre el archivo PHP donde ocurre el error de tiempo de espera.
- Añade la siguiente función al inicio del script:
set_time_limit(300);. - Guarda el archivo y prueba ejecutar tu proceso nuevamente. Nota: esta función no funcionará si el servidor está configurado en modo seguro (safe mode).