1. Code
  2. Cloud & Hosting
  3. Web Servers

Cómo aumentar max_execution_time en PHP

Scroll to top

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En este artículo rápido, exploraremos las diferentes opciones que te permiten aumentar la cantidad máxima de tiempo de ejecución que un script tiene permitido antes de que el analizador de PHP termine su ejecución.

¿Qué es la directiva max_execution_time en PHP?

La directiva max_execution_time establece la cantidad máxima de tiempo que un script tiene permitido para su ejecución antes de que sea finalizado. El valor predeterminado es 30 segundos, y puedes aumentarlo a un límite razonable según tus requisitos.

En la mayoría de los casos habrás notado que, si un script tarda demasiado en ejecutarse, PHP arroja el famoso error de tiempo máximo de ejecución excedido:

1
Fatal error: Maximum execution time of 30 seconds exceeded

En la mayoría de los casos la directiva max_execution_time no está personalizada y, por lo tanto, tiene un valor predeterminado de 30 segundos, por lo que podrías terminar recibiendo este error.

En la siguiente sección analizaremos un par de formas diferentes de aumentar el valor de la directiva max_execution_time.

Cómo aumentar max_execution_time en PHP

Hay algunas formas diferentes de aumentar el tiempo de ejecución de un script.

La función ini_set

Esta es una de las formas más sencillas de aumentar el valor de la directiva max_execution_time. La función ini_set se usa para cambiar el valor de las directivas de configuración que están disponibles en el archivo de configuración php.ini. Por lo tanto, podemos usarla para cambiar el valor de la directiva max_execution_time.

Para aumentar el tiempo de ejecución, puedes usar el siguiente fragmento de código en la parte superior de tu script.

1
ini_set('max_execution_time', '300');

El ejemplo anterior establecería la directiva max_execution_time en 300 segundos.

Por otro lado, si estableces su valor en 0, esto permitirá que el script se ejecute durante un período de tiempo infinito. Debes tener mucho cuidado al usar esta opción, y nunca se recomienda en producción.

El archivo de configuración php.ini

Si quieres incrementar el valor de la directiva max_execution_time globalmente, deberías usar esta opción. Por supuesto, necesitas tener permiso para cambiar el archivo php.ini.

Continúa y localiza el archivo php.ini en tu servidor. Si no sabes cómo hacerlo, he explicado cómo encontrar el archivo php.ini en otro artículo.

Una vez que hayas localizado el archivo php.ini, ábrelo con tu editor de texto favorito y busca la siguiente línea:

1
; Maximum execution time of each script, in seconds
2
; https://php.net/max-execution-time
3
; Note: This directive is hardcoded to 0 for the CLI SAPI
4
max_execution_time = 30

Modifícalo según tus necesidades, guárdalo y reinicia tu servidor web.

La función set_time_limit

Aparte de la función ini_set que acabamos de discutir, también hay otra función de PHP que te permite establecer el tiempo máximo de ejecución de un script. La función set_time_limit te permite establecer el número de segundos que un script tiene permitido ejecutarse.

Veamos rápidamente cómo trabaja la función set_time_limit.

1
set_time_limit(300);

Como puedes ver, la función set_time_limit recibe un solo argumento: el número de segundos. Si estableces su valor en 0, un script tiene permitido ejecutarse durante un período de tiempo infinito.

De hecho, la función set_time_limit funciona de manera un poco diferente a la directiva max_execution_time. Cuando se llama a la función set_time_limit, esta restablece el contador de tiempo de espera a cero. Y, a partir de ahí, mide el tiempo de ejecución del script que hayas establecido con la función set_time_limit.

Supongamos que un script se ejecuta durante 10 segundos, y luego se llama a la función set_time_limit para establecer el tiempo de ejecución del script en 30 segundos. En ese caso, un script se ejecutaría durante un total de 40 segundos antes de que sea terminado. Por lo tanto, si quieres usar la función set_time_limit para establecer el tiempo máximo de ejecución de un script, deberías colocarla en la parte superior de este último.

Usuarios de Apache: el archivo .htaccess

Si estás usando el servidor Apache para impulsar tu sitio web, este proporciona el archivo de configuración .htaccess, que te permite establecer las directivas de configuración de php.ini. En esta sección veremos cómo puedes usar el archivo .htaccess para establecer la directiva max_execution_time.

En primer lugar, debes localizar el archivo .htaccess en tu proyecto. En la mayoría de los casos deberías poder encontrarlo en la raíz de documentos de este último. Si no puedes encontrarlo en la raíz del proyecto, debes asegurarte de que tu software de administración de archivos no lo haya ocultado, ya que el punto que se encuentra antes del nombre del archivo .htaccess indica que es un archivo oculto. Puedes usar la opción mostrar archivos ocultos en tu administrador para ver todos los archivos ocultos en la raíz de tus documentos. Si aún no puedes encontrarlo, entonces necesitas crear uno.

Abre el archivo .htaccess en tu editor de texto favorito y agrega la siguiente línea al final.

1
php_value max_execution_time 300

Guárdalo, ¡y habrás terminado!

Conclusión

Hoy analizamos algunas formas diferentes de cambiar el valor de la directiva max_execution_time en PHP.

Aprende PHP con un curso gratuito en línea

Si quieres aprender PHP, ¡consulta nuestro curso gratuito en línea sobre los fundamentos de PHP!

En este curso, aprenderás los fundamentos de la programación en PHP. Comenzarás con los conceptos básicos, aprendiendo cómo funciona PHP y escribiendo bucles y funciones simples en él. Luego avanzarás a la codificación de clases para una programación orientada a objetos (POO) sencilla. En el camino, aprenderás las habilidades más importantes para escribir aplicaciones para la web: tendrás la oportunidad de practicar la respuesta a las solicitudes GET y POST, analizar JSON, autenticar usuarios y usar una base de datos MySQL.