Trop grand WP_WOOCommerce_Sessions dans la base de données [comment correctement]

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

Pour une boutique en ligne de taille modeste, Wocommerce peut être roulé sur un “Hébergement partagé”, Pouvoir supporter à la légère et 5 000 produits / 100 commandes à jour, si le sujet utilisé ne consomme pas beaucoup de ressources et n'abuse pas d'autres modules (plugins).

Optimisation du code source Du thème (thèmes WP), modules (plugins WP) et Optimisation de la base de données Il y a aussi deux aspects que nous devons prendre beaucoup.

J'ai remarqué les jours précédents alors qu'une boutique en ligne de dimensions modestes commence Pour consommer beaucoup de ressources RAM et CPU sur un serveur dédié généreux. Cette consommation élevée de ressources a conduit à un défaut “charger” Augmenté sur le serveur et un grand temps pour charger les pages du magasin du soir.

Lorsque nous remarquons une grande charge injustifiée sur un serveur Web, il est bon d'étudier les causes, avant de prendre une mesure.

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

Ce este wp_woocommerce_sessions ?

Comme nous pouvons sentir de son nom, la table “wp_woocommerce_sessions” Contient des séances de php (Séances PHP).
Ces sessions sont des actions d'utilisateurs sur le site (ou des robots Web) et atteignent le plus souvent la base de données via des cookies. Dans le WP_WOOCOMMERCE_SESSION, se trouvent des données stockées sur les produits placés par les utilisateurs dans le panier d'achat, les coupons, les frais de transport, les données des clients et de nombreuses autres informations liées au processus de commande de produit.

Ces sessions sont créées même si l'utilisateur est enregistré ou non sur le site et normalement ils doivent expirer et supprimer automatiquement.

Malheureusement, il ne se produit pas toujours que ces séances soient supprimées et, dans certains cas, elles restent stockées en permanence dans WP_WOOCOMMERCE_SESIONS, ce qui fait que le tableau atteint un grand volume.

Comment essuyer la table wp_woocommerce_sessions DIN SQL?

1. Nous allons à Tableau de bordWooCommerceStatutOutils (languette).

2. Nous descendons à l'option “Sessions des clients clairs“. Prudent! La suppression des séances des clients implique la suppression de tous les produits placés par eux dans le panier. Si, bien que la suppression de ces séances soit des clients qui ont des produits dans le panier, ils disparaîtront et la commande éventuelle ne sera pas terminée.

3. Cliquez “Clair” et confirmation l'opération.

À ce moment la table “WP_WOOCOMMERCE_SESIONS” Il est vide, donc toutes les séances d'achat des clients ont été supprimées.

Le problème n'est pas de loin résolu. Le tableau SQL WP_WOOCOMMERCE_SESSIONS collectera des données et, par défaut, il gagnera à nouveau des proportions, ce qui n'est pas souhaitable.

Comment pouvons-nous faire s'arrêter en permanence les sessions des clients dans WooCommerce – wp_woocommerce_sessions?

J'ai montré ci-dessus comment la table peut être vidé “WP_WOOCOMMERCE_SESIONS” Dans la base de données, mais le problème apparaîtra à nouveau après quelques jours lorsque les sessions des clients seront rassemblées.

Avant WooCommerce 2.5, les séances des clients ont été capturées par des cookies, puis enregistrées dans WordPress Table “wp_options“.
Pour les grands magasins, cette méthode a souvent conduit à des catastrophes. “wp_options” Être un tableau vital de WordPress, utilisé par les options et les paramètres généraux. Identification manuelle et suppression des sessions clients stockées dans wp_options Ce n'était pas un travail facile.
Les performances de WooCommerce n'étaient pas les meilleures, et l'évolutivité au fil du 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 manutention et de stockage basé sur WooCommerce WP Sessions Manager. Ce système a conduit à l'apparence wp_woocommerce_sessions. Un tableau dédié pour les sessions des clients, qui dans la base de données n'interagit pas avec d'autres tables. En cas d'erreurs majeures, les pertes devraient être minimes.

D'après ce que j'ai remarqué, les magasins en ligne lancés avant WooCommerce 2.5 et qui ont reçu des mises à jour constantes au fil du temps, ont des problèmes concernant la suppression automatique des sessions client. Il s'agit très probablement d'un bogue 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, c'était un conflit avec une fonction ajoutée dans le fichier functions.php du thème, et qui empêcher la suppression automatique après une séance expirée de woocommerce_sessions.
Si vous rencontrez un tel problème, vous devez étudier attentivement toutes les causes possibles. Erreur SQL, SQL Persecutions, CRON Job, entrepose avec d'autres plugins et enfin vérifiez vos modifications de code au fil du temps.

J'ai vu que WooCommerce offre seulement 29 $ le plugin capable d'administrer des clients. “Chariot et sessions claires pour WooCommerce“. Bien sûr, outre la suppression programmée des sessions, le module a plusieurs outils qui pourraient être utiles.

Une option plus simple de Suppression programmée A “woocommerce_sessions” à des intervalles d'un jour, est le déplacement 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 Stealthsetts.com à partir de 2006. J'ai une riche expérience dans les systèmes d'exploitation: macOS, Windows et Linux, mais aussi dans les langages de programmation et les plateformes de blogs (WordPress) et pour les magasins en ligne (WooCommerce, Magento, Presashop).

Home Votre source de tutoriels informatiques, des conseils et des nouvelles utiles. Trop grand WP_WOOCommerce_Sessions dans la base de données [comment correctement]

1 pensé sur «Trop grand WP_WOOCommerce_Sessions dans la base de données [comment correctement]”

  1. Je n'ai aucun moyen d'effacer les données pèsent 500 Mo et j'ai une limite de 1000 Mo à la minute d'effacement tout est complètement rempli…Une solution?

    Répondre
Laisser un commentaire