Tecnología WordPress

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.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

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

Francisco Javier Carazo Gil

Entradas recientes

¿Por qué falla Bizum en WooCommerce? 9 causas

Por qué falla Bizum WooCommerce: detecta errores de credenciales, firma, entorno y pedidos para recuperar…

hace % días

Plugin gratuito Redsys WordPress: qué revisar

Elige un plugin gratuito Redsys WordPress con criterio: compatibilidad, seguridad, configuración bancaria y límites para…

hace % días

Qué necesito para activar CECA Online en mi web

¿Qué necesito para activar CECA Online? Revisa contrato bancario, datos del terminal, seguridad, pruebas y…

hace % días

Cómo elegir una pasarela para suscripciones

Aprende a elegir una pasarela para suscripciones en WordPress: revisa recurrencia, compatibilidad, seguridad y soporte…

hace % días

Plugin Bizum WordPress para cobrar con control

Elige un plugin Bizum WordPress compatible con tu flujo de venta, configura la pasarela bancaria…

hace % días

Cómo aceptar CECA en reservas de WordPress

Aprende cómo aceptar CECA en reservas WordPress, configurar pagos seguros y confirmar cada reserva sin…

hace % días