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

Comme je l'ai dit dans d'autres articles, WooCommerce c'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 de taille modeste WooCommerce il peut également être exécuté sur "hébergement mutualisé", pouvant supporter facilement 5.000 100 produits / XNUMX commandes par jour, si le thème utilisé ne consomme pas beaucoup de ressources et que vous n'abusez pas d'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 boutique en ligne de tailles modeil commence consommer énormément 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.

qu'est-ce que wp_woocommerce_séances ?

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 Web (ou des robots Web) et la plupart du temps, elles atteignent la base de données via des cookies. Dans wp_woocommerce_sessions sont des données stockées sur les produits placés par les utilisateurs dans le panier, les coupons, les frais d'expédition, les 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, il n'arrive pas toujours que ces sessions soient supprimées et, dans certains cas, elles restent définitivement stockées dans wp_woocommerce_sessions, ce qui fait que cette table atteint un volume assez important.

Comment supprimer le tableau wp_woocommerce_sessions de SQL ?

1. aller à Tableau de bord →  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.

A ce moment 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. Table SQL wp_woocommerce_sessions y collectera à nouveau des données et par défaut, il obtiendra à nouveau 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?

J'ai montré ci-dessus comment le tableau "wp_woocommerce_sessions" de la base de données, mais le problème réapparaîtra après quelques jours lorsque les sessions client se rassembleront à nouveau.

Avant WooCommerce 2.5, les sessions client ont été capturées via des cookies, pour être enregistrées dans le tableau plus tard 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.
Performance WooCommerce ils n'étaient pas les meilleurs, et l'évolutivité dans le temps était un point sensible.

Avec le lancement WooCommerce 2.5 en 2015, les développeurs WooCommerce introduit un nouveau système de gestion et de stockage des sessions WooCommerceBasé 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 observé, 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 concernant 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 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 ça WooCommerce propose pour seulement 29$ un plugin capable de gérer les sessions clients. "Effacer 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é par la technologie, j'écris avec plaisir sur StealthSettings.com depuis 2006. J'ai une expérience approfondie dans les systèmes d'exploitation : macOS, Windows et Linux, ainsi que dans les langages de programmation et les plates-formes de blogging (WordPress) et pour les boutiques en ligne (WooCommerce, Magento, PrestaShop).

Comment » Tweaks & Hacks » Trop grand wp_woocommerce_sessions dans la base de données [How-To Fix]

1 réflexion sur « Trop grand wp_woocommerce_sessions 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