WooCommerce se convirtió en un módulo muy utilizado de más y más revista en línea. SEO, Gestión de productos, acciones, código limpio e intuitivo, interfaz de administración simple y miles de arados desarrollados para WOO son solo algunos de los argumentos para los cuales merece una oportunidad cuando está pensando en desarrollar una tienda en línea.
Al igual que cualquier CMS, ninguno de los Woo no es excepciones a las probabilidades que pueden ocurrir en diferentes escenarios de uso o interacción con otros complementos de WordPress.
En un servidor con recursos hardware Bastante generoso, noté que servicio de base de datos (mysqld) comienza a solicitar casi 80– 90% de la memoria RAM. Un problema bastante grave, porque simplemente no entendí de dónde proviene periódicamente el error 110 (110: Conexión agotada).
En una verificación más cuidadosa de los procesos SQL, descubrí que una base de datos tiene dos tablas de volumen bastante considerables: wp_actionscheduler_acciones y wp_actionscheduler_logs.
En mod normal las acciones programadas pero Programador de acción de WooCommerce Debe eliminarse automáticamente después de que se ejecuten. Esto no siempre sucede, y permanecen bloqueados en WP_ACTIONCHEDIER_ACTIONS con el estado: fallido, cancelado, pendiente o completo.
En la imagen sobre las tablas “WP_ACTIONSSCHEDULER” ellos solo tienen Un poco más de 15 MB. Lo siento, no me inspiré a hacer una captura de pantalla cuando lo hicieron1.2 GB. Aun así, 15 MB es suficiente para una tabla que contiene las acciones programadas de WooCommerce.
Estas tablas “INFLADO” resulta por lo cual Wp-cron no elimina las entradas Estado de cuidado de Au “fallido“, “cancelado” y “completo“. Normalmente, estas entradas deben eliminarse automáticamente de la base de datos.
Las acciones programadas y su condición podemos verlo muy fácilmente y en WooCommerce →Estado →Acciones programadas.
Cómo limpiamos los statters “fallido“, “cancelado” y “completo” DEwp_actionscheduler_acciones y wp_actionscheduler_logs
Accedemos a la base de datos a través de PhPMyAdmin, luego en SQL ejecutamos las líneas de comando:
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'
Una vez que se limpia esta mesa, no significa que el problema esté resuelto. Como dije anteriormente, la causa principal es desactivar por varias razones del servicio WP-Chron. Así las entradas con estados “zombi” Ya no se pueden borrar.
Es muy importante saber que si tiene una tienda en línea en WoCommerce, y está conectado a las tiendas de Facebook a través del complemento “Facebook para WooCommerce“, sincroniza automáticamente los productos de WooCommerce con su cuenta de Facebook Shops. Y hace unos 15 minutos. Estas entradas SQL si no están controladas, puede obtener varios cientos de miles de líneas “wc_facebook_regenererer_feed” en “wp_actionscheduler_acciones“.
Este intervalo está bien para las tiendas que tienen una gran cantidad de pedidos y es necesario que el stock de las tiendas de Facebook se actualice constantemente. Si aún considera estas sincronización de Facebook y su tienda se pueden hacer cada 24 horas, la línea de código a continuación puede ayudarlo.
Abra el archivo Functions.php del tema de WordPress / WooCommerce que su tienda está ejecutando y agregue:
add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );
A continuación, podemos establecer un intervalo de una semana para la limpieza automática:
add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
return WEEK_IN_SECONDS;
}
Una vez guardado estos cambios, no tendrá problemas con las tablas gigantes para “wp_actionscheduler_acciones”.
@Sigilo
Gracias por la ayuda. Ahorras el día y compras. Primero descubrí esto después de un bloqueo de mi tienda web. Muchos complementos han comenzado a volcar su salida en esa tabla y se llena… La mesa de 9.2 GB provocó que mi anfitrión renunciara a su buen momento de PPP. ¡Ahora estoy recortando el buen código!
Solo una pregunta sobre la caída de la cuerda esta mesa “wpb_action_scheduler_purge” ¿Es un valor predeterminado en el DB o debería hacerlo posiblemente? Cambiarlo a algo en mi (predeterminado es mi DB no 'wp_’ ) o es una característica?
Gracias por la ayuda y el súper bonito artículo
Saludo
Netz