Las herramientas para programar las tareas internas de un sitio web hecho con WordPress, deben ser eficaces y flexibles. Lo que hace necesario buscar opciones que ayuden y complementen los procesos internos de estas aplicaciones. Dentro de este contexto, se encuentra el WP Cron o tareas programadas en WordPress, cuya capacidad de respuesta es bastante aceptable. Sin embargo, en este artículo, vamos a explicarte acerca de WordPress Action Scheduler (o Acciones Programadas). Una alternativa que está siendo utilizada por muchos desarrolladores de complementos (entre ellos Automattic), que mejora aún más el rendimiento y estabilidad de las tareas internas que una herramienta necesita llevar a cabo para un óptimo funcionamiento. Comencemos:

¿Qué es el WordPress Action Scheduler?

El WordPress Action Scheduler no es más que una cola de tareas escalable y rastreable para el procesamiento en segundo plano de grandes colas (acciones) de tareas en entornos de WordPress. Diseñado especialmente para ser distribuido como un plugin de WordPress (no requiere necesariamente el acceso directo al servidor donde esté alojado el sitio web). Es decir, es una alternativa para llevar a cabo grandes procesos en segundo plano usado por muchos plugins y/o plantillas en WordPress de forma óptima.

El WordPress Action Scheduler es una librería que, al igual que el Cron de WordPress, dispara acciones (hook) en este entorno. Las cuales ejecutan algunas funciones lo más pronto como sea posible. Cada acción se programa/agenda con datos únicos, permitiendo que cada llamada realice procesamiento solamente con esos datos y evitando así duplicidad. Las acciones también se pueden programar para que se ejecute en una o más ocasiones. Por ejemplo: enviar un email, cinco veces al día, para cada usuario de la tienda.

Un ejemplo sencillo puede ser, imaginarse esta herramienta como una extensión de un do_action() que agrega la capacidad de retrasar y repetir esas tareas u hook indefinidamente.

Esta funcionalidad también crea una sólida cola de trabajos para el procesamiento en segundo plano de grandes colas de tareas en WordPress. Con la adición de registro y una interfaz de administración que proporciona trazabilidad en sus tareas procesadas en segundo plano.

¿Cómo funciona el WordPress Action Scheduler?

Al momento de activarse por un proceso que lo requiera, las Acciones Programadas de WordPress almacenan el nombre del hook (del proceso a llevar a cabo), los argumentos y la fecha programada para una acción que debería activarse lo antes posible.

WordPress Action Scheduler Screen

Posteriormente, intentará ejecutarse cada minuto por medio del hook action_scheduler_run_schedule (que se programa internamente utilizando el sistema WP-Cron integrado de WordPress). Una vez por minuto, también verificará en el hook de shutdown del WP Admin si hay acciones pendientes. Si las hay, iniciará una cola a través de una solicitud de async loopback.

Cuando se activa, el WordPress Action Scheduler verificará:

  • Las acciones programadas que tengan una fecha de vencimiento en este momento o antes.
  • Las acciones programadas para ejecutarse ahora o en algún momento del pasado.
  • Las acciones programadas para ejecutarse de forma asincrónica, es decir, no programadas que tienen una fecha cero (significa que siempre vencerán sin importar cuándo se realice la verificación).

✅ Procesamiento por lotes de trabajos en segundo plano

Si hay acciones para procesar, el WordPress Action Scheduler realizará un llamado único para un lote de 25 acciones por defecto y comenzará a procesar ese lote. El proceso PHP generado para ejecutar el lote continuará procesando lotes de 25 acciones hasta que use el 90% de la memoria disponible o haya estado procesando durante 30 segundos.

En ese momento, si hay acciones adicionales para procesar, se realizará una solicitud de bucle invertido asincrónico (async loopback) al sitio para continuar procesando acciones en una nueva solicitud.

Este proceso y las solicitudes de bucle de retorno continuarán hasta que se procesen todas las acciones.

✅ Limpieza interna al momento de ejecutar tareas programadas

Antes de procesar un lote, eliminará cualquier hook existente sobre acciones que hayan estado en una cola durante más de cinco minutos (o más específicamente, 10 veces el límite de tiempo permitido, que por defecto es de 30 segundos).

✅ También eliminará las acciones que se completaron o cancelaron hace más de un mes

Si una acción se ejecuta durante más de 5 minutos, el WordPress Action Scheduler asumirá que se agotó el tiempo de espera y la marcará como fallida. Sin embargo, si todas las respuestas de esas llamadas a la acción se completaran con éxito en algún momento después de ese tiempo de espera de 5 minutos, su estado se actualizará más tarde, ha completado. Dejando de ser así una acción fallida para ser una acción completada.

✅ Trazabilidad

¿Es posible saber si se ejecutaron todas las acciones? Con WordPress Action Scheduler es fácil responder esto, dado que cuenta con un mantenimiento de registros integrado. Todos los eventos de cada acción se registran en la tabla actionscheduler_logs que se muestran en la interfaz de administración (accesible desde WordPress).

Los eventos registrados de forma predeterminada incluyen cuando una acción:

  • Es una acción creada.
  • Es una acción iniciada (incluidos los detalles de cómo se ejecutó, por ejemplo, a través de WP CLI o WP-Cron).
  • Es una acción completada.
  • Es una acción fallida.

Si falla con un error que se puede registrar, ese error se almacenará y será visible en la interfaz de administración. Lo que permitirá rastrear lo que salió mal en el proceso de ejecución y tomar las acciones pertinentes.

Casos de éxito del WordPress Action Scheduler

Cada mes, esta herramienta es usada para procesar millones de pagos por suscripciones en un sitio como WooCommerce.com. Así como correos electrónicos y otros eventos para una variedad de otros complementos.

woocommerce.com

Incluso, se ha empleado en sitios online que procesan colas de más de 50.000 trabajos y realizan operaciones intensivas en recursos, como procesar pagos y crear pedidos, en 10 colas simultáneas, a una tasa de más de 10,000 acciones / hora sin afectar negativamente las operaciones normales del sitio.

El WordPress Action Scheduler está diseñado específicamente para su distribución en plugins (y temas o plantillas) de WordPress y no se requiere acceso directo al servidor. Adicionalmente, si un complemento necesita procesamiento en segundo plano, especialmente de grandes conjuntos de tareas, esta herramienta sería de mucha ayuda.

WP-Cron vs WordPress Action Scheduler

A diferencia de WP-Cron, el WordPress Action Scheduler no depende de las visitas que se reciba del sitio. Además, que toma muy en cuenta el rendimiento de la tienda. Convirtiéndolo en una alternativa excelente para manejar esas tareas recurrentes en ambientes WordPress que consumen muchos recursos (en plugins y/o plantillas).

Es importante señalar que el action scheduler no está diseñado para reemplazar por completo el WP-Cron de WordPress. Ambos pueden funcionar en paralelo sin ningún inconveniente, dado que su funcionamiento no se verán alterados. Aunque de forma predeterminada, es iniciado por WP-Cron (y el enlace shutdown en las solicitudes de administración), no depende del sistema WP-Cron directamente. Puede empezar la cola del action scheduler de otras maneras con solo una o dos líneas de código.

💡 TE RECOMENDAMOS:  Cron Jobs de WordPress: 10 motivos por lo que falla

El objetivo principal del WordPress Action Scheduler es mejorar el rendimiento de funciones que lo requieran. Sobre todo en plantillas y plugins. Sin embargo, sí es posible reemplazar todas las funciones del WP-Cron a Action Scheduler, pero requiere conocimientos técnicos para poder llevarse o algún plugin especializado en ello.

Para finalizar

Para que los software de las plataformas digitales funcionen de manera correcta y no presenten fallas, debe realizar mantenimientos de manera periódica. De esa manera se evita que comiencen a generar fallas y retrasan el trabajo diario que se realiza en ellas.

En este artículo, buscamos mostrar alternativas a las tareas programadas que vienen por defecto en WordPress para optimizar todos los procesos en segundo plano. Permitiendo elevar así, el nivel de funcionamiento para todos los plugins y plantillas (o incluso tareas del mismo ecosistema WordPress) que lo requiera. Te invitamos a visitar su página oficial Action Scheduler – Background Processing Job Queue for WordPress para más detalles. ¡Hasta la próxima!


Te invitamos a:
  • Colocar un comentario más abajo. Si deseas saber un poco más acerca de algún tema en específico escríbenos y lo podríamos desarrollar en un próximo artículo 😉.
  • Únete a nuestra página en Facebook de manera gratuita o síguenos en Instagram. Donde podrás compartir tus dudas, consultas y todo lo que desees.
  • Si te gustó este artículo, ¡recomiéndalo y compártelo! ❤️.
  • Cualquier duda escríbenos ✉️.
  • "Si trabajas en algo que te gusta y te apasiona no necesitas tener un plan maestro de cómo hacer las cosas, sucederán" - MARK ZUCKERBERG.

¡Hasta la próxima 👋!


¿Fue de tu agrado el artículo 🙃? ¡Califícanos!