¿Tiempo de espera en Admin-Ajax?

2

Estoy escribiendo un complemento y estoy usando admin-ajax . Es una función de larga duración, es decir, se conecta a una API y se carga en las publicaciones. Esto podría tomar 5-10 minutos a veces. Parece que después de 1-2 minutos mi llamada AJAX recibe una respuesta de error "502 (Bad Gateway)", y el trabajo en el lado de PHP se detiene en ese momento exacto.

  1. ¿Hay un tiempo de espera en lo que puede hacer con admin-ajax?
  2. ¿Hay una mejor manera de realizar actividades "de larga duración" en un complemento que no sea admin-ajax?

¡Gracias!

    
pregunta GavinR 12.05.2015 - 03:47

1 respuesta

4

Siempre hay un tiempo de espera, ya sea TCP o el tiempo de ejecución de PHP (a menos que configure su servidor de una manera extraña, PHP eliminará las tareas de ejecución prolongada).

Si necesitas trabajar mucho, deberías:

Divídelo en pedazos más pequeños

Los complementos como las vistas en miniatura de regeneración recuperan una lista de elementos en los que se debe trabajar, luego repase la lista en pequeños lotes rápidos y realice un seguimiento de lo que se ha hecho a medida que avanza. Puedes hacer 10 minutos de trabajo, pero en lugar de 1 millón de cosas en 1 solicitud, es mejor hacer 1 cosa en 1 millón de solicitudes.

WP CLI

El trabajo largo y costoso no se debe hacer en la interfaz. Debe hacerse en la línea de comando. Este es el mejor método y se recomienda .

Implemente un comando WP CLI que haga lo que necesita hacer y ejecútelo. Esto evita completamente el tiempo de espera de ejecución de PHP, así como cualquier tiempo de espera de conexión que pueda ocurrir. Los comandos WP CLI podrían ejecutarse durante horas si su código tiene suficientes recursos del sistema y se limpia después de sí mismo para evitar pérdidas de memoria. Si necesita pasar datos, hágalo usando parámetros.

si no tiene acceso a la CLI, está utilizando un servicio de host administrado o un servicio de alojamiento compartido, en cuyo caso debe mover el host (el alojamiento compartido es problemático) o descargar el sitio en su local y ejecute el comando CLI localmente, luego cargue los resultados

    
respondido por el Tom J Nowell 15.05.2015 - 04:06

Lea otras preguntas en las etiquetas