Tu página web muestra el mensaje de error "Maximum execution time of 30 seconds exceeded" o la página se queda cargando sin fin y sin resultado. Es un error de timeout de PHP: tu script tarda más que el tiempo máximo de ejecución permitido. En esta guía te explicamos qué significa y cómo solucionarlo.

¿Qué es un error de timeout de PHP?

PHP tiene un límite de tiempo integrado para ejecutar scripts. De forma predeterminada son 30 segundos (a veces 60 o 120 segundos, según la configuración de tu hosting). Si un script tarda más, PHP detiene la ejecución y muestra este mensaje de error:

Fatal error: Maximum execution time of 30 seconds exceeded in /path/to/file.php on line 123

Este límite de tiempo existe como protección: evita que los scripts bloqueados sobrecarguen todo tu servidor. Pero en operaciones legítimas (grandes importaciones, migraciones de bases de datos, cálculos pesados) el límite estándar puede quedarse corto.

Causas frecuentes:

  • Consultas grandes a la base de datos: consultas que procesan miles de filas
  • Subidas de archivos: subir o procesar archivos grandes
  • Operaciones de plugins o temas: actualizaciones, importaciones o exportaciones que tardan mucho
  • Llamadas a API externas: conexiones con servicios externos lentos
  • Bucles infinitos: errores de programación que bloquean un script
  • Procesamiento pesado de imágenes: redimensionar o convertir imágenes grandes

Cómo solucionar el timeout de PHP como propietario de la web

Sigue estos pasos para aumentar el timeout de PHP o resolver el problema de fondo.

1. Aumenta max_execution_time en php.ini

La forma más directa de aumentar el timeout es el archivo de configuración php.ini:

max_execution_time = 300

Esto sube el límite a 300 segundos (5 minutos). En un hosting compartido, a menudo puedes crear un archivo .user.ini en la raíz de tu web con el mismo ajuste.

2. Aumenta el límite en wp-config.php

En WordPress, wp-config.php también te permite definir el límite de tiempo:

set_time_limit(300);

O añade este ajuste de PHP:

ini_set('max_execution_time', 300);

Coloca esta línea encima de la línea /* That's all, stop editing!*/ de tu wp-config.php.

3. Aumenta el límite con el PHP Selector de DirectAdmin

En un hosting con DirectAdmin puedes cambiar los ajustes de PHP desde el panel de control:

  1. Inicia sesión en DirectAdmin
  2. Ve a Advanced Features → Select PHP Version (o PHP Selector)
  3. Haz clic en "Switch to PHP Options
  4. Busca max_execution_time y ponlo en 300
  5. Haz clic en "Save

4. Aumenta el límite en .htaccess

En servidores Apache también puedes cambiar el ajuste en .htaccess:

php_value max_execution_time 300

Atención: Esto solo funciona con mod_php, no con PHP-FPM ni FastCGI. Con PHP-FPM tienes que modificar php.ini o la configuración del pool.

5. Optimiza el problema de fondo

Aumentar el límite de tiempo es una solución provisional. La solución real suele ser optimizar el script que tarda demasiado:

  • Optimizar las consultas a la base de datos: añade índices, limita el número de resultados con LIMIT, usa paginación
  • Procesamiento por lotes: procesa los conjuntos de datos grandes en lotes pequeños en lugar de todo a la vez
  • Activar la caché: guarda en caché los resultados de los cálculos pesados (Redis, Memcached)
  • Usar tareas en segundo plano: traslada las operaciones pesadas a una cola o a una tarea cron
  • Acelerar las llamadas externas: define timeouts para las llamadas a API y usa procesamiento asíncrono

6. Comprueba si hay bucles infinitos

Si el timeout vuelve una y otra vez, incluso después de aumentar el límite, puede haber un error de programación:

  • Activa WP_DEBUG para encontrar la línea exacta
  • Comprueba si hay bucles while/for sin una condición de salida correcta
  • Revisa las llamadas a funciones recursivas por si falta un caso base
  • Desactiva los plugins instalados recientemente para encontrar al culpable

Ajustes de PHP relacionados

Además de max_execution_time, hay más ajustes de PHP relacionados con el tiempo:

AjusteValor predeterminadoFunción
max_execution_time30Tiempo máximo de ejecución por script (segundos)
max_input_time60Tiempo máximo para analizar la entrada (segundos)
memory_limit128MUso máximo de memoria por script
upload_max_filesize2MTamaño máximo de archivo al subir
post_max_size8MTamaño máximo de los datos POST

Con un VPS tienes control total sobre todos estos ajustes. En un hosting compartido, algunos ajustes los limita tu proveedor de hosting.

Preguntas frecuentes sobre los errores de timeout de PHP

¿Qué significa "Maximum execution time of 30 seconds exceeded"?

Este mensaje de error significa que un script PHP se ha ejecutado durante más de 30 segundos y que el servidor lo ha interrumpido. El límite de 30 segundos es el valor predeterminado del ajuste de PHP max_execution_time. Puedes aumentar este límite en php.ini, wp-config.php o el panel de control de tu plan de hosting.

¿Es seguro aumentar max_execution_time?

Sí, subirlo a 120-300 segundos es seguro para la mayoría de las webs. Eso sí, no lo dejes ilimitado (0 = sin límite), porque los scripts bloqueados podrían sobrecargar todo tu servidor. Un valor de 300 segundos (5 minutos) es un buen equilibrio entre funcionalidad y protección.

¿Por qué me aparece un timeout de PHP al actualizar WordPress?

Las actualizaciones de plugins y temas de WordPress tienen que descargar, descomprimir e instalar archivos. Con conexiones a internet lentas, actualizaciones grandes o servidores sobrecargados, esto puede tardar más de lo que permite el timeout. Sube temporalmente max_execution_time a 300 segundos y vuelve a intentar la actualización. Si te pasa a menudo, plantéate también pasar a un hosting web más rápido.

¿Tienes problemas de timeout de PHP por un hosting lento? Echa un vistazo a nuestros planes de hosting web con LiteSpeed y NVMe SSD para la ejecución de PHP más rápida. O elige un VPS con control total sobre todos los ajustes de PHP.