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
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.
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.
| Causa | Cómo comprobarlo | Solución |
|---|---|---|
| Un trabajo a granel en el navegador | El 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 lento | El 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ágina | Una 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 esperabas | El 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 infinito | El 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. |
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.
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;'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
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'
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 ] ) );'
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
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.
¿Por qué el límite es de treinta segundos?
¿Se aplica el límite a WP-CLI?
Lo crie y el trabajo sigue fracasando en el mismo punto.
¿Es esto el mismo que un 504?
Si el problema era otro.
Estos errores pueden parecerse en el navegador.