Avisos
Vaciar todo

Reabro "woocommerce_sessions"

19 Respuestas
3 Usuarios
0 Reacciones
62 Visitas
Respuestas: 182
Reputable Member
Topic starter
 

Buenos días

Reabro la consulta que indico, por no ver opción a consultar en ella aunque me dice que no está terminada.

https://www.webempresa.com/foro/postid/487860

 

Como expuse hace unos días, la tabla indicada había subido hasta los 2,2gb y obviamente, es un disparate.

Lo solucioné por medio de las opciones de WC, pero creo y de cara a los clientes que no es la mejor forma ya que borra también los carros pendientes de compra y algunos de ellos son utilizados para hacer presupuestos (composición de PC's, temas de redes, ...)

Me preguntaba si hay algún plugin que nos permita vaciar dicha tabla a la par que mantener los carros durante x días.

Como siempre digo, gracias por vuestra ayuda.

 

PD/ He abierto ticket en el sistema porque a la vez que ha aumentado la tabla, tenemos problemas con el certificado que el servidor nos cede (quizá no tenga que ver, pero...).

Contenido solo visible a usuarios registrados


 
Respondido : 11/03/2026 6:40 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

Puedes utilizar esta consulta en phpMyAdmin:

DELETE FROM wp_woocommerce_sessions WHERE session_expiry < UNIX_TIMESTAMP();

Esto eliminará las filas donde la caducidad  este expirada pero manteniendo las sesiones abiertas con carritos pendiente.

Una vez realizado ejecuta la siguiente consulta para optimizar la tabla:

OPTIMIZE TABLE wp_woocommerce_sessions;

Nota: tienes que modificar wp_ por el prefijo de tu base de datos

Si no quieres hacerlo manualmente puedes utilizar el plugin wp-optimize para optimizar la base de datos:

-> https://wordpress.org/plugins/wp-optimize/

Una vez instalado:

.- Accede a wp-optimize -> Bases de datos, selecciona Optimizar tablas de la base de datos y Eliminar opciones temporales caducadas

Con el plugin puedes optimizar todas las tablas y programar una optimización por ejemplo semanalmente

 

Un saludo

 


 
Respondido : 11/03/2026 11:31 am
Respuestas: 182
Reputable Member
Topic starter
 

Gracias Pepe

Hablaré con los de sistema para ver si se puede hacer un cron y ejecutarlo semanalmente, a ver si así la tabla no se dispara.

De todas formas, me lo agrego a limpieza que ya tengo.

DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'complete';
DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'canceled';
DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'failed'

DELETE FROM `xx_actionscheduler_logs` WHERE `action_id` = 'xxxxxx';

(este, a través de consulta de odbc a la base de datos, me lista unos 1200 aprox periódicamente).

En cuanto al plugin, es incompatible con WP Rocket que tengo licenciado.


 
Respondido : 11/03/2026 11:50 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

 es incompatible con WP Rocket que tengo licenciado

No no es imcompatible, solo tienes que desactivar las opciones de Caché y optimización de archivos ( CSS y JS ) si los estás optimizando con WP Rocket 

 

Un saludo


Esta publicación ha sido modificada el hace 6 meses por Pepe
 
Respondido : 11/03/2026 12:31 pm
Respuestas: 182
Reputable Member
Topic starter
 

Buenos días

Tras unas semanas de pruebas y demás, aparte de consultar con los chicos de sistema (que me reenvían a vosotros) y un programador externo que ya me optimizó WC, el tema sigue y diariamente, a través de wc y su opción de "Borrar las sesiones de cliente" en Estado / Herramientas, lo estoy ejecutando.

No se si los comandos que me indicaste son los mismos, pero pienso que a través del propio programa habrá menos errores.

Dicho esto, habría algún plugin, complemento o lo que sea, para ver que es lo que está atacando a la tienda (boots, ...) y poder frenarlo?

Me reitero en lo dicho siempre, gracias.


 
Respondido : 20/05/2026 5:59 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

Lo primero desactiva el cron de WordPress ya que creo que no lo tienes desactivado y pude afectar en el cron que tienes creado en WePanel.

Para desactivarlo añade lo siguiente en el archivo wp-config antes de la línea /* That's all, stop editing! Happy publishing. */

define ('DISABLE_WP_CRON', true);

.- Añade lo siguiente en el plugin de fragmentos de código

add_action('woocommerce_cleanup_sessions', 'mls_limpiar_sesiones');


function mls_limpiar_sesiones() {
    global $wpdb;
    $wpdb->query(
        "DELETE FROM {$wpdb->prefix}woocommerce_sessions 
         WHERE session_expiry < UNIX_TIMESTAMP()"
    );
    $wpdb->query("OPTIMIZE TABLE {$wpdb->prefix}woocommerce_sessions");
}


add_action('init', function() {
    if (!wp_next_scheduled('woocommerce_cleanup_sessions')) {
        wp_schedule_event(time(), 'daily', 'woocommerce_cleanup_sessions');
    }
});

 

Este código realizara una limpieza de eventos cada 24 horas que es el tiempo que WooCommerce tiene programado por defecto

Una vez añadido el código puedes verificar que el evento está programado instalando el plugin gratuito WP Crontrol , este te mostrará todos los eventos cron activos y cuándo se ejecutarán.

 

Un saludo

 


 
Respondido : 20/05/2026 11:07 am
Respuestas: 182
Reputable Member
Topic starter
 

El cron lo activé para hacer pruebas, pero lo desactivo.


 
Respondido : 20/05/2026 11:24 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

Es mucho más fiable ejecutar el cron desde el hosting en lugar de usar el WP-Cron de WordPress.

El cron de WordPress no es un cron real, sino un cron virtual (wp-cron.php) que solo se ejecuta cuando alguien visita la web. Esto significa que si tu sitio tiene poco tráfico o nadie entra en determinados horarios, las tareas programadas pueden retrasarse o no ejecutarse nunca.

Al configurarlo directamente en el servidor, te aseguras de que las tareas se ejecuten siempre en el momento exacto, independientemente del tráfico.

 

Dejo el hilo abierto por si necesitas retomarlo

 

Un saludo


 
Respondido : 20/05/2026 11:53 am
Respuestas: 182
Reputable Member
Topic starter
 

Buenas tardes

Cron activado, código insertado y plugin instalado 

 

Esperemos unos días.

Os mantengo informados.


 
Respondido : 20/05/2026 3:20 pm
Karen Rios
Respuestas: 20411
Illustrious Member Admin
 

Hola Antonio, 

De acuerdo, quedamos atentos como va todo

Un Saludo


 
Respondido : 20/05/2026 3:24 pm
Respuestas: 182
Reputable Member
Topic starter
 

Buenos días

Entiendo que esa misma opción serviría para "limpiar" otros ficheros que hago de forma manual y mensualmente, ya que también sube de una forma importante llegando a ocupar unos 100mb.

Respondido por: Pepe

 

add_action('woocommerce_cleanup_sessions', 'mls_limpiar_sesiones');


function mls_limpiar_sesiones() {
    global $wpdb;
    $wpdb->query(
        "DELETE FROM {$wpdb->prefix}woocommerce_sessions 
         WHERE session_expiry < UNIX_TIMESTAMP()"
    );
    $wpdb->query("OPTIMIZE TABLE {$wpdb->prefix}woocommerce_sessions");
}


add_action('init', function() {
    if (!wp_next_scheduled('woocommerce_cleanup_sessions')) {
        wp_schedule_event(time(), 'daily', 'woocommerce_cleanup_sessions');
    }
});

 

DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'complete';
DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'canceled';
DELETE FROM `xx_actionscheduler_actions` WHERE `status` = 'failed';

Lógicamente y aparte del nombre del fichero, habría que sustituir "daily" por la opción mensual que sería?

Luego, también hago :

DELETE FROM `xx_actionscheduler_logs` WHERE `action_id` = '[id localizado a través de odbc]';

pero, éste comando es más difícil de localizar, supongo,

 

 


Esta publicación ha sido modificada el hace 4 meses por Antonio
 
Respondido : 21/05/2026 5:33 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

Exacto, puedes sustituir el anterior por este

add_action('woocommerce_cleanup_sessions', 'mls_limpiar_sesiones');

function mls_limpiar_sesiones() {
global $wpdb;

// Limpiar sesiones WooCommerce expiradas
$wpdb->query(
"DELETE FROM {$wpdb->prefix}woocommerce_sessions
WHERE session_expiry < UNIX_TIMESTAMP()"
);
$wpdb->query("OPTIMIZE TABLE {$wpdb->prefix}woocommerce_sessions");

// Limpiar Action Scheduler (acciones completadas, canceladas y fallidas)
$wpdb->query(
"DELETE FROM {$wpdb->prefix}actionscheduler_actions
WHERE status IN ('complete', 'canceled', 'failed')"
);
$wpdb->query("OPTIMIZE TABLE {$wpdb->prefix}actionscheduler_actions");
}

add_action('init', function() {
if (!wp_next_scheduled('woocommerce_cleanup_sessions')) {
wp_schedule_event(time(), 'daily', 'woocommerce_cleanup_sessions');
}
});

 

Un saludo


 
Respondido : 21/05/2026 8:23 am
Respuestas: 182
Reputable Member
Topic starter
 

Buenos días

Como todos ellos últimamente, hoy también he revisado en el panel de control el tamaño de la bdatos

Hoy, a las 07:20 está en 3.xx GB, un disparate pues su tamaño "limpia" no llega a 1 (uno); consultado phpmyadmin, el fichero que nos ocupa está en 2.2 gb, sin comentarios (adjunto imágenes).

 

Entiendo que el proceso de limpieza que pusimos ayer tardará unas horas en ser efectivo, pero ..

Simplemente es para que lo sepáis.

Captura de pantalla 2026 05 22 072208
Captura de pantalla 2026 05 22 072252

 
Respondido : 22/05/2026 5:19 am
Respuestas: 182
Reputable Member
Topic starter
 

Buenos días de nuevo.

Creado ticket a los chicos de mantenimiento por exceso de consumo sin trabajar en la web, me dicen que:

Hemos estado revisando el caso, y vemos que el problema está en un bot de entrenamiento de IA están "escrapeando" tu web tsaco.es ; es decir, están visitándola masivamente para entrenarse.
Este bot esel de Meta ( Facebook )
meta-externalagent
Al acceder de forma tan masiva, provocan picos muy importantes de consumo de CPU y memoria en tu hosting

Simplemente os informo para que si los que nos dedicamos a la venta de informática tenemos problemas de suministro, la programación de "IA" nos afecta a todos en general.

Seguimos a la espectativa del caso.

 

 


 
Respondido : 22/05/2026 6:04 am
Pepe
 Pepe
Respuestas: 42532
Illustrious Member
 

Hola Antonio.

Ok, muchas gracias por la información, seguro que es útil para otros usuarios con el mismo problema.

 

Un saludo 


 
Respondido : 22/05/2026 9:02 am
Página 1 / 2