Wp_woocommerce_sessions trop volumineux dans la base de données [Comment réparer]

Comme je l'ai dit dans d'autres articles, WooCommerce est un module de plus en plus robuste et flexible, capable de transformer WordPress un Boutique en ligne idéale pour une entreprise en démarrage.

Pour une boutique en ligne modeste, WooCommerce peut fonctionner sur un "hébergement mutualisé", et peut facilement prendre en charge 5.000 100 produits/XNUMX commandes par jour, si le thème utilisé ne consomme pas beaucoup de ressources et n'abuse pas des autres modules (plugins).

Optimisation du code source WP Thèmes, modules (WP Plugins) et optimisation de la base de données il y a aussi deux aspects auxquels nous devons faire très attention.

J'ai remarqué l'autre jour qu'une modeste boutique en ligne démarre de consommer beaucoup de ressources RAM et CPU sur un serveur dédié généreuse. Cette forte consommation de ressources a entraîné une "charge" accrue sur le serveur et un long temps de chargement des pages de la boutique en ligne.

Lorsque nous remarquons une charge excessivement élevée sur un serveur Web, il est bon d'étudier attentivement les causes avant de prendre des mesures.

Dans la base de données, j'ai remarqué que la table "wp_woocommerce_sessions"C'est énorme. Il avait plus de 6 Go. Un volume énorme pour une table dans une base de données qui ne dépassait normalement pas 100 Mo au total.

sessions wp woocommerce
Trop grand wp_woocommerce_sessions dans la base de données [How-To Fix] 3

Qu'est-ce que wp_woocommerce_sessions ?

Comme on peut le deviner d'après son nom, la table "wp_woocommerce_sessions« Contient des sessions PHP (Sessions PHP).
Ces sessions sont des actions des utilisateurs du site (ou des robots du web) et la plupart du temps elles accèdent à la base de données via des cookies. Dans wp_woocommerce_sessions sont stockées des données sur les produits mis par les utilisateurs dans le panier, des coupons, des frais d'expédition, des données client et de nombreuses autres informations liées au processus de commande de produits.

Ces sessions sont créées que l'utilisateur soit ou non enregistré sur le site et devraient normalement expirer et être supprimées automatiquement après un certain temps.

Malheureusement, ce n'est pas toujours le cas que ces sessions soient supprimées et dans certains cas elles restent stockées en permanence dans wp_woocommerce_sessions, ce qui rend cette table assez volumineuse.

Comment supprimer le tableau wp_woocommerce_sessions de SQL ?

1. aller à Dashboard →  WooCommerce →  Statut →  Outils (languette).

2. Faites défiler jusqu'à l'option "Effacer les sessions client". Minutieux! Supprimer des sessions client signifie supprimer tous les produits qu'ils ont mis dans le panier. Si lors de la suppression de ces sessions il y a des clients qui ont des produits dans le panier, ils disparaîtront et l'éventuelle commande en ligne ne sera pas finalisée.

3. Cliquez sur "Effacer" et confirmez l'opération.

Séances de courtoisie 1
Trop grand wp_woocommerce_sessions dans la base de données [How-To Fix] 4

À ce stade, la table "wp_woocommerce_sessions" est vide, donc toutes les sessions d'achat des clients ont été supprimées.

Le problème est loin d'être résolu. La table SQL wp_woocommerce_sessions y rassemblera à nouveau des données et par défaut elle reprendra des proportions, ce qui n'est pas souhaitable.

Comment empêcher les sessions client d'être stockées de manière permanente dans WooCommerce - wp_woocommerce_sessions?

Nous avons montré ci-dessus comment la table "wp_woocommerce_sessions" peut être vidée de la base de données, mais le problème réapparaîtra après quelques jours au cours desquels les sessions client se rassembleront à nouveau.

Avant WooCommerce 2.5, les sessions client étaient capturées via des cookies, puis enregistrées dans la table. WordPress "wp_options" .
Pour les grands magasins, cette méthode a souvent conduit à des catastrophes. "Wp_options”Être la table vitale de WordPress, utilisé par les options et paramètres généraux. Identification et suppression manuelle des sessions client stockées dans wp_options ce n'était pas une tâche facile.
Les performances de WooCommerce n'étaient pas les meilleures et l'évolutivité dans le temps était un point sensible.

Avec le lancement de WooCommerce 2.5 en 2015, les développeurs WooCommerce ont introduit un nouveau système de gestion et de stockage de session WooCommerce, basé sur Gestionnaire de sessions WP. Ce système a conduit à l'émergence wp_woocommerce_sessions. Une table dédiée aux sessions client, qui dans la base de données n'interagit pas avec les autres tables. En cas d'erreurs majeures, les pertes devraient être minimes.

D'après ce que j'ai vu, les boutiques en ligne lancées avant WooCommerce 2.5 et qui ont reçu des mises à jour constantes au fil du temps ont quelques problèmes avec la suppression automatique des sessions client. Il s'agit très probablement d'un bogue apparu sur une version plus récente de WooCommerce 2.5 ou d'un plugin WordPress / WooCommerce qui n'a pas suivi les mises à jour.

Dans mon cas, il s'agissait d'un conflit avec une fonction ajoutée au fichier functions.php du thème, et qui empêche la suppression automatique après une période de sessions expirées de woocommerce_sessions.
Si vous êtes confronté à un tel problème, vous devez étudier attentivement toutes les causes possibles. Erreur SQL, autorisations SQL, Cron Job, conflits avec d'autres plugins et enfin, vérifiez les modifications que vous avez apportées au code au fil du temps.

J'ai vu que WooCommerce propose pour seulement 29$ un plugin capable de le faire adminséances de stress client. "Vider le panier et les sessions pour WooCommerce". Bien entendu, en plus de la suppression programmée des sessions, le module dispose de plusieurs outils qui pourront vous aider.

Une option plus simple suppression programmée de "woocommerce_sessions"A intervalles d'un jour, est disponible avec le code suivant dans 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();
}

Laissez un commentaire si vous avez besoin d'aide ou si vous avez une autre solution.

Passionné de technologie, j'aime tester et écrire des tutoriels sur les systèmes d'exploitation macOS, Linux, Windows, à propos de WordPress, WooCommerce et configurer les serveurs web LEMP (Linux, NGINX, MySQL et PHP). j'écris sur StealthSettings.com depuis 2006, et quelques années plus tard, j'ai commencé à écrire sur des tutoriels iHowTo.Tips et des actualités sur les appareils de l'écosystème Apple: iPhone, iPad, Apple Montre, HomePod, iMac, MacBook, AirPods et accessoires.

1 réflexion sur "Wp_woocommerce_sessions trop volumineux dans la base de données [How-To Fix]"

  1. Je n'ai aucun moyen de supprimer les données qui pèsent 500 Mo et j'ai une limite de 1000 Mo par minute pour supprimer tout est à nouveau complètement rempli… .une solution ?

    Répondre

Laisser un commentaire