logooneasesoria4

¿Necesita una consulta gratuita?

Cómo borrar miles de acciones programadas rápidamente

Las acciones programadas son una serie de mensajes en los que se describen acciones que realiza a cabo WooCommerce (y otros plugins) de manera programada, como la sincronización de productos, actualizaciones, etc. Estas acciones deben eliminarse una vez que se ejecutan, pero esto no siempre sucede.

Estas acciones programadas pueden estar en varios estados:

  • Pendientes
  • Completadas
  • Fallidas
  • Canceladas

Para visualizarlas e interactuar con estas acciones programadas puedes acceder a la pantalla de administración en el menú WooCommerce → Estado → Acciones programadas, si tienes activo WooCommerce, o en Herramientas → Scheduled Actions, en caso contrario.

Los mensajes y las mismas acciones programadas se almacenan en diversas tablas de la base de datos de tu WordPress:

  • wp_actionscheduler_actions
  • wp_actionscheduler_logs
  • wp_actionscheduler_claims
  • wp_actionscheduler_groups

El problema con las acciones programadas que se acumulan

Normalmente, los mensajes de acciones programadas deberían eliminarse cada 30 días, vaciándose en consecuencia sus respectivas tablas de la base de datos, pero no siempre es así…

Por distintos motivos, normalmente fallos en la sincronización de acciones programadas o con el cron de WordPress, en ocasiones no se eliminan las acciones programadas y sus mensajes, pudiendo llegar a acumularse miles, incluso millones, de MB en tu base de datos, normalmente en las tablas wp_actionscheduler_actions y wp_actionscheduler_logs.

actionscheduler actions tabla bd wordpress

Si quieres optimizar una web, parte importante de su rendimiento es la base de datos, y cientos de MB, incluso GB acumulados en tablas no ayudan, pero sobre todo no es normal, pues como te decía, esto suele ser un error, o sea, NO es normal una tabla de acciones programadas de varios gigas, por muy grande que sea la web o muchos plugins que tenga.


Nota importante: Siempre que realices cualquier modificación o acción importante para el rendimiento de tu web, como en el caso de todo lo que vamos a ver en este tutorial, debes antes de nada realizar una copia de seguridad completa de tu web, o como mínimo de la base de datos.

Nota: En este tutorial usamos como referencia de nombre de las tablas el prefijo por defecto (wp_) pero debes adaptar cualquier comando o función usando el prefijo que tú uses, no el prefijo por defecto. Por ejemplo, si me refiero a la tabla wp_actionscheduler_actions y tu prefijo de tablas de la base de datos es pepito_ debes ejecutar la consulta o acción sobre la tabla pepito_actionscheduler_actions

Cómo optimizar las tablas de acciones programadas

Antes de nada es importante que sepas que, por defecto, las tablas de WordPress se almacenan usando el motor InnoDB, que tiene una funcionalidad de bloqueo de nivel de fila, lo que significa que se pueden ejecutar varias consultas simultáneamente en la tabla.

Para webs de mucho tráfico o webs que sincronizan sus productos con otro sitio esto se convierte en un problema porque los registros no se pueden eliminar si se está ejecutando otra consulta y se mantienen para siempre.

Por lo tanto, como una solución simple, se puede configurar el motor de base de datos a MyISAM para la tabla wp_actionsscheduler_actions  para que solo se pueda ejecutar una consulta en la tabla, lo que significa que todas las demás acciones deben esperar a que finalice la primera.

Por supuesto, esto es más lento, pero definitivamente eliminará los registros de la tabla y evitará que aumente el tamaño en cientos de MB o incluso GB.

Cambiar el motor de base de datos de la tabla es, en realidad, sencillo:

  1. Selecciona la base de datos.
  2. Haz clic en el nombre de la tabla wp_actionscheduler_actions
  3. Haz clic en la pestaña Operaciones
  4. Cambia el motor de la base de datos de InnoDB a MyISAM en la sección de Opciones de la tabla.
  5. Haz clic en Continuar.

cambiar tabla wordpress innodb a myisam

Cómo borrar acciones programadas

La manera más obvia, y sencilla, de borrar acciones programadas es hacerlo desde su misma interfaz de administración. El problema es que, al menos en las de WooCommerce, solo puedes ir borrando de 10 en 10, lo que lo convierte en una tarea prácticamente inalcanzable en el caso de que tengas miles o cientos de miles de acciones acumuladas.

Si fuese viable solo tienes que ir a la pestaña de acciones programadas completas, canceladas o fallidas, seleccionar todas y, en el desplegable de acciones en lote, elegir la opción de borrar.

borrar acciones programadas

En las acciones programadas de WordPress es más sencillo, pues en las opciones de pantalla puedes mostrar más de 10 registros por página, y sería una opción más abarcable.

borrar acciones programadas wordpress

Cómo borrar acciones programadas masivamente

Como ya te habrás dado cuenta de que la opción manual no es viable en la mayoría de las ocasiones en las que realmente hace falta, cuando hay miles o millones de registros, tenemos que recurrir a otros métodos para realizar un borrado masivo del exceso de acciones programadas almacenadas en las tablas de la base de datos.

Vaciar el registro de acciones programadas

Una primera acción muy segura y sencilla que podemos realizar es vaciar la tabla del registro de acciones programadas, que también puede llegar a ocupar varios GB en casos extremos.

Para ello debes abrir la aplicación PHPMyAdmin desde el panel de tu empresa de hosting y, tras seleccionar la base de datos de tu instalación, marcar la tabla wp_actionscheduler_logs y, abajo del todo de la lista de tablas, en el desplegable denominado Para los elementos que están marcados:, elegir la opción de Vaciar.

Este es un proceso sencillo, limpio y sin riesgos, que puede liberar montones de MB o incluso GB de tu base de datos sin provocar ningún efecto negativo en tu instalación.

Borrar acciones programadas mediante consultas SQL

En lo que se refiere a la tabla más problemática, wp_actionscheduler_actions, la cosa no es tan sencilla, y no se puede (debe) vaciar como con la tabla de registros, pues eliminarías todas las acciones, incluso las pendientes, y esas son acciones que tienen que ejecutarse, no debes borrarlas.

Lo que queremos es deshacernos de esos montones de MB de acciones canceladas, fallidas o completadas, que no son necesarias para nuestra web y que suponen un problema de rendimiento.

Para ello podemos ejecutar consultas SQL que nos ayuden a eliminar aquellas acciones programadas que sobren, rápidamente. Puedes realizarlas mediante la interfaz de comandos (SSH) o desde la pestaña SQL de la herramienta PHPMyAdmin.

ejecutar sql desde phpmyadmin

Borrar acciones programadas fallidas

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'

Borrar acciones programadas canceladas

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'

Borrar acciones programadas completadas

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'

Borrar acciones programadas pendientes

Si, por algún motivo, también quieres borrar las que en estado pendiente (aunque no te lo recomiendo) con este comando:

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'pending'

La ejecución de estos comandos borrará automáticamente y de una vez todas las acciones programadas elegidas (fallidas, canceladas, completadas), liberando cientos de MB o incluso GB de tu base de datos.

Cambiar el periodo de retención de las acciones programadas

Independientemente de la labor de limpieza de registros acumulados, es recomendable en instalaciones de webs con mucho tráfico y/o transacciones de venta, cambiar el periodo de retención de las acciones programadas, el rango de tiempo tras el que se eliminan automáticamente las completadas, fallidas y canceladas, que, por defecto, es de 30 días.

Para conseguirlo debes añadir una función a tu WordPress con el método que prefieras, como la siguiente:

/* Cambiar periodo retencion action scheduler */
function ayudawp_cambiar_retencion_action_scheduler() {
return WEEK_IN_SECONDS;
}
add_filter( 'action_scheduler_retention_period', 'ayudawp_cambiar_retencion_action_scheduler' );

Con el ejemplo anterior cambiaremos el periodo de retención por defecto, de 30 días a 7 días (WEEK_IN_SECONDS). Las posibilidades son las siguientes:

  • MINUTE_IN_SECONDS
  • HOUR_IN_SECONDS
  • DAY_IN_SECONDS
  • WEEK_IN_SECONDS

De este modo evitarás que la tabla wp_actionscheduler_actions crezca de nuevo desmesuradamente.

¿Y esto no se puede hacer con plugins?

Que yo sepa, solo existe un plugin que permite realizar borrados sencillos y rápidos, y se llama Cleanup Action Scheduler. El cual lleva bastante tiempo sin actualizarse, y en las últimas versiones de WooCommerce no funciona, una pena, porque añadía unos iconos de papelera junto a cada estado de acción para poder borrarlas todas rápidamente.

Esperemos que se actualice y pronto podamos también tener esta sencilla opción de nuevo.

¿Te gustó este artículo?
17 de abril de 2023

RECIBE

GRATIS

Recursos para tu web GRATIS.

En agradecimiento por haber leido nuestro blog te ofrecemos algúnos plugins, temas y asesoría para el desarrollo de tu sitio web.
Envía correo y espera respuesta...Gracias..!
baneranunciopluginsbest
Publicaciones Relacionadas
Abrir chat
One Asesoría
Hola 👋
¿Necesita cotizar una página o tienda online, cómo podemos ayudarle..?