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
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
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.
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
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.
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
El cron lo activé para hacer pruebas, pero lo desactivo.
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
Buenas tardes
Cron activado, código insertado y plugin instalado
Esperemos unos días.
Os mantengo informados.
Hola Antonio,
De acuerdo, quedamos atentos como va todo
Un Saludo
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.
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,
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
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.
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.
Hola Antonio.
Ok, muchas gracias por la información, seguro que es útil para otros usuarios con el mismo problema.
Un saludo