Demasiado grande wp_woocommerce_sessions en la base de datos [Cómo arreglar]

Como dije en otros artículos, WooCommerce es un módulo cada vez más robusto y flexible, capaz de transformar WordPress una Tienda online ideal para una empresa de nueva creación.

Para una tienda online de tamaño modeeste, WooCommerce también se puede ejecutar en "alojamiento compartido", pudiendo admitir fácilmente 5.000 productos / 100 pedidos por día, si el tema utilizado no consume muchos recursos y no abusa de otros módulos (complementos).

Optimización del código fuente Temas de WP, módulos (complementos de WP) y optimización de la base de datos También hay dos aspectos sobre los que debemos tener mucho cuidado.

Me di cuenta el otro día que una tienda online de tallas modecomienza consumir enormemente muchos recursos de RAM y CPU en un servidor dedicado generoso. Este alto consumo de recursos provocó una mayor "carga" en el servidor y un largo tiempo de carga de las páginas de la tienda en línea.

Cuando notamos una carga injustificadamente alta en un servidor web, es bueno investigar cuidadosamente las causas antes de tomar cualquier medida.

En la base de datos noté que la tabla "wp_woocommerce_sessions"Es enorme. Tenía más de 6 GB. Un volumen enorme para una tabla en una base de datos que normalmente no superaba los 100 MB en total.

que es wp_woocommerce_sesiones?

Como podemos adivinar por su nombre, la mesa "wp_woocommerce_sessions"Contiene sesiones de PHP (Sesiones PHP).
Estas sesiones son acciones de los usuarios del sitio web (o robots web) y la mayoría de las veces llegan a la base de datos a través de cookies. En wp_woocommerce_sessions son datos almacenados sobre los productos colocados por los usuarios en el carrito de compras, cupones, tarifas de envío, datos del cliente y mucha otra información relacionada con el proceso de pedido del producto.

Estas sesiones se crean tanto si el usuario está registrado en el sitio como si no y normalmente caducan y se eliminan automáticamente después de un tiempo.

Desafortunadamente, no siempre sucede que estas sesiones se eliminen y, en algunos casos, quedan almacenadas permanentemente en wp_woocommerce_sessions, lo que hace que esta tabla alcance un volumen bastante grande.

Cómo borrar la tabla wp_woocommerce_sessions de SQL?

1. ir a Panel De Control →  WooCommerce →  Estado →  Herramientas (pestaña).

2. Desplácese hacia abajo hasta la opción "Sesiones claras para los clientes“. ¡Cuidadoso! Eliminar sesiones de clientes significa eliminar todos los productos que pusieron en el carrito de compras. Si al eliminar estas sesiones hay clientes que tienen productos en el carrito, estos desaparecerán y no se completará el posible pedido online.

3. Haga clic en "Borrar" y confirme la operación.

En este momento la tabla "wp_woocommerce_sessions" está vacío, por lo que se han eliminado todas las sesiones de compras de los clientes.

El problema está lejos de resolverse. Tabla SQL wp_woocommerce_sessions volverá a recopilar datos y, de forma predeterminada, volverá a obtener proporciones, lo que no es deseable.

¿Cómo evitamos que las sesiones de los clientes se almacenen permanentemente en WooCommerce – wp_woocommerce_sessions?

He mostrado arriba cómo la tabla "wp_woocommerce_sessions" de la base de datos, pero el problema aparecerá nuevamente después de unos días cuando las sesiones del cliente se reúnan nuevamente.

antes WooCommerce 2.5, las sesiones de los clientes fueron capturadas a través de cookies, para ser guardadas en la tabla más adelante WordPress "wp_options".
Para las tiendas más grandes, este método a menudo ha llevado a desastres. “Wp_options”Siendo la mesa vital de WordPress, utilizado por las opciones y configuraciones generales. Identificar y eliminar manualmente sesiones de clientes almacenadas en wp_options no fue un trabajo fácil.
actuaciones WooCommerce no eran los mejores, y la escalabilidad en el tiempo era un punto sensible.

Con el lanzamiento WooCommerce 2.5 en 2015, los desarrolladores WooCommerce introdujo un nuevo sistema de manejo y almacenamiento de sesiones WooCommerceBasado en Gerente de sesiones de WP. Este sistema condujo a la aparición wp_woocommerce_sessions. Una tabla dedicada para sesiones de cliente, que en la base de datos no interactúa con otras tablas. En caso de errores importantes, las pérdidas deben ser mínimas.

Por lo que he observado, las tiendas en línea se lanzaron antes WooCommerce 2.5 y que han recibido actualizaciones constantes a lo largo del tiempo, tienen algunos problemas con respecto a la eliminación automática de sesiones de clientes. Lo más probable es que sea un error que apareció en una versión más nueva de WooCommerce 2.5 o un complemento WordPress / WooCommerce que no se ha mantenido al día con las actualizaciones.

En mi caso, fue un conflicto con una función agregada al archivo functions.php del tema, y ​​que evita la eliminación automática después de un tiempo de sesiones caducadas de woocommerce_sessions.
Si se enfrenta a un problema de este tipo, debe investigar detenidamente todas las causas posibles. Error de SQL, permisos de SQL, Cron Job, conflictos con otros complementos y, por último, pero no menos importante, verifique los cambios realizados por usted en el código a lo largo del tiempo.

Vi eso WooCommerce ofrece por solo $ 29 un complemento capaz de administrar las sesiones de los clientes. "Borrar carrito y sesiones para WooCommerce“. Eso sí, además del borrado programado de sesiones, el módulo cuenta con varias herramientas que podrían ayudarte.

Una opción más sencilla eliminación programada de "woocommerce_sessions"A intervalos de un día, está disponible con el siguiente código en functions.php:

// clean cart every day
if (!wp_next_scheduled('cron_wc_clean_cart')) {
    wp_schedule_event( time(), 'daily', 'cron_wc_clean_cart' );
}

add_action ( 'cron_wc_clean_cart', 'wc_clean_session_cart' );
function wc_clean_session_cart() {
    global  $wpdb;

    $wpdb->query( "TRUNCATE {$wpdb->prefix}woocommerce_sessions" );
    $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key='_woocommerce_persistent_cart_" . get_current_blog_id() . "';" );
    wp_cache_flush();
}

Deja un comentario si necesitas ayuda o tienes otra solución.

Apasionado por la tecnología, escribo con gusto en StealthSettings.com desde el año 2006. Tengo una amplia experiencia en sistemas operativos: macOS, Windows y Linux, así como en lenguajes de programación y plataformas de blogs (WordPress) y para tiendas en línea (WooCommerce, Magento, PrestaShop).

Cómo » Ajustes y trucos » Demasiado grande wp_woocommerce_sessions en la base de datos [Cómo arreglar]

1 comentario en “Demasiado grande wp_woocommerce_sessions en la base de datos [Cómo arreglar]"

  1. no tengo como borrar los datos pesa 500mb y tengo un limite de 1000mb por minuto para borrar todo se vuelve a llenar por completo….alguna solucion?

    Responder
Deja un comentario