Limpiar el Action Scheduler de WooCommerce cuando se vuelve enorme

Cuando trabajas desarrollando en muchas ocasiones necesitas poder ejecutar tareas programadas de cierta manera: a cierta hora o tras la ejecución de otra en el futuro. WordPress, como buen sistema que ejecuta sobre el servidor, a diferencia de los programas que ejecutan directamente en un equipo de escritorio o móvil por ejemplo; necesita que alguien «lo ejecute» a distancia para poder hacer ejecuciones de este tipo, las llamadas programadas.

Yo mismo uso muchas de estas acciones programadas para poder gestionar el pago fraccionado en la pasarela de pago para RedSys y WooCommerce o en el importador de usuarios y clientes para WordPress y WooCommerce, para hacer importaciones programadas.

Action Scheduler una mejora sobre WP Cron

WordPress ofrece en su núcleo un manejador de este tipo de eventos programados, el llamado WP Cron, que es útil y correcto pero se queda algo corto para algunas situaciones:

  • Action Scheduler tiene una cola de eventos gráfica y un log de ejecuciones para ver el orden de ejecución a futuro y en el pasado de las tareas programadas
  • Action Scheduler ejecuta las tareas de forma ordenada
  • Action Scheduler permite hacer tareas que se ejecuten «cuanto antes» tras algún evento y que luego desaparezcan
  • En general Action Scheduler es más fácil de manejar y más flexible que WP Cron a la vez que más fiable

De hecho yo mismo cambie el proceso de importación de usuarios que se hace de forma programada de WP Cron a Action Scheduler para poder manejar ficheros mucho más grandes, porque su flexibilidad me permitía una solución fácil a ese problema y con WP Cron hubiera sido o difícil o imposible.

Los problemas de Action Scheduler

Sin embargo, como cualquier otra tecnología, tiene puntos a favor y puntos en contra. Hay tareas simples que no necesitan usar Action Scheduler porque de hecho, si quieres usarlo, tienes que instalarlo (en tu plugin) y esto es un problema para algo básico donde WP Cron está integrado en el core y no hay que hacer nada.

Y luego aparte hay otro problema, si por algún motivo algún plugin empieza a enviar miles de peticiones a Action Scheduler, como se guarda un registro de tareas ejecutadas con detalles de la misma, las tablas que lo albergan empiezan a engordar.

Esto afecta de doble manera: rendimiento, porque todo se vuelve más lento llegando a ser peligroso para la estabilidad de la web; y espacio porque he llegado a ver tablas de Action Scheduler de varios gigas, imaginaros lo que eso significa hasta para las copias de seguridad.

Así que os voy a enseñar como limpiar todo esto de forma sencilla. Con SQL y phpMyAdmin podréis hacerlo. Adaptad el nombre de las tablas a vuestro prefijo si lo tenéis cambiado.

Borrar todas las acciones finalizadas

DELETE FROM wp_actionscheduler_actions
WHERE status = 'complete';

Borrar todas las acciones fallidas

DELETE FROM wp_actionscheduler_actions
WHERE status = 'failed';

Borrar los logs asociados a acciones que se han borrado

Porque no tiene sentido guardar datos que se refieren a otros que ya han sido borrados.

DELETE FROM wp_actionscheduler_logs
WHERE action_id NOT IN (SELECT action_id FROM wp_actionscheduler_actions);

Y solo un detalle, tened cuidado o contactad con un profesional si no tenéis claro lo que estáis haciendo, porque podéis borrar acciones que sí las necesitábais de alguna manera… así que tenéis la receta pero usadla con conocimiento.

Por cierto, en Ayuda WordPress, han hecho una entrada sobre cómo añadir herramientas a WooCommerce para borrar acciones programadas, muy relacionado con esto y más cómodo de usar si lo haces de forma repetida.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito