NuevoBlack Friday: 50 % de descuento en tu primer pago
Solución de problemas de WordPress

El tiempo máximo de ejecución excedió

PHP detuvo un script que había estado funcionando más tiempo de lo que se permite. El límite hizo su trabajo; la pregunta es si el trabajo perteneció a una solicitud web.

Fatal error: Maximum execution time of 30 seconds exceeded

Respuesta breve

Sepa si se trata de una solicitud web o de un trabajo de fondo. Una página que necesita más de treinta segundos tiene un problema para arreglar; una importación que necesita diez minutos para correr en algún lugar un tiempo de salida no se aplica.

Diagnóstico

Las causas más probables primero.

Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.

CausaCómo comprobarloSolución
Un trabajo a granel en el navegadorEl fracaso sigue una acción que empezaste en wp-admin y se detiene al mismo tiempo transcurrido cada intento.Ejecutarlo desde WP-CLI, donde el límite no se aplica, o en trozos que registran progreso y reanudar.
Una actualización o instalación sobre un enlace lentoEl fracaso ocurre mientras se descarga en lugar de mientras se procesa, y los paquetes más grandes fallan mientras que los pequeños tienen éxito.Aumente el límite para el contexto de administración, o instale desde el sistema de archivos en lugar de sobre HTTP.
Una llamada de salida lenta dentro de una páginaUna URL de primera línea ordinaria se ve afectada y el sitio depende de un servicio de terceros que está teniendo un mal día.Rellene la solicitud de salida con su propio tiempo de salida y cache el resultado, en lugar de elevar el límite de script alrededor de él.
El límite se aplica cuando no lo esperabasEl valor difiere entre el CLI, la solicitud web y el cron - cada contexto puede llevar uno diferente.Cambiarlo donde el trabajo funciona realmente. Un límite web elevado no hace nada para un trabajo ejecutando bajo cron.
Un bucle infinitoEl tiempo se pasa sin red y sin actividad de base, y el mismo camino de código se repite en un perfilador.Arreglar el bucle. El aumento del límite aquí sólo significa que el sitio está atascado por más tiempo antes de que se rinda.
Guía

Solución paso a paso.

Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.

  1. Averigüe qué límite se aplica cuando

    La línea de comandos y la solicitud web generalmente no comparten un valor.

    php -i | grep max_execution_time
    php -r 'echo ini_get("max_execution_time"), PHP_EOL;'
  2. Mueva el trabajo a donde no se aplica el límite

    WP-CLI corre sin un reloj de pared sobre él, por lo que los trabajos largos pertenecen allí.

    wp plugin install some-plugin --activate
  3. Si debe correr en una solicitud, levantarlo para ese camino sólo

    Se desliza al contexto de administración en lugar de a todo lo que sirve el sitio.

    wp config set WP_MEMORY_LIMIT '256M'
  4. Mira si el tiempo va a salir

    Si el script está esperando en el servidor de alguien más, el límite no es lo que hay que cambiar.

    wp eval 'var_dump( wp_remote_get( "https://example.com", [ "timeout" => 5 ] ) );'
  5. Confirme ahora termina

    Ejecute el mismo trabajo de nuevo y vea que está completo en lugar de asumir que lo hará.

    time wp cron event run --due-now
En MagicWP

De esto se encarga la plataforma.

Los límites de ejecución se elevan para los contextos de administración y cron y se quedan donde pertenecen a solicitudes web, por lo que una importación tiene espacio para terminar sin permitir que una página pública funcione durante minutos. WP-CLI está disponible en cada plan para los trabajos que nunca deberían haber estado en una pestaña del navegador, y el trabajo programado se ejecuta en un programador real en lugar de dentro de la carga de página de alguien.

Preguntas frecuentes

Preguntas frecuentes.

¿Por qué el límite es de treinta segundos?
Es el defecto de PHP para las solicitudes web, y para una solicitud web es generoso. Ningún visitante espera treinta segundos. El límite es un problema sólo cuando un trabajo que no debe estar en una solicitud se encuentra en uno.
¿Se aplica el límite a WP-CLI?
No. La línea de comandos PHP funciona sin límite de tiempo de ejecución por defecto, que es exactamente por qué las importaciones, exportaciones y migraciones largas pertenecen allí.
Lo crie y el trabajo sigue fracasando en el mismo punto.
Entonces el límite que usted levantó no es el que se está aplicando. Las solicitudes de Cron y Web pueden llevar diferentes valores, y un proxy en frente puede tiempo fuera antes de PHP.
¿Es esto el mismo que un 504?
Relacionado pero no el mismo. Es PHP pararse; un 504 es el servidor web que se entrega en PHP. Un trabajo largo puede producir, dependiendo de qué reloj se agote primero.
Errores relacionados

Si el problema era otro.

Estos errores pueden parecerse en el navegador.