te groot wp_woocommerce_sessions in database [Hoe te repareren]

Zoals ik in andere artikelen al zei, WooCommerce het is een steeds robuustere en flexibelere module die kan transformeren WordPress een Ideale online winkel voor een startend bedrijf.

Voor een webshop van formaat modeste, WooCommerce het kan ook worden uitgevoerd op "shared hosting", waarbij het gemakkelijk 5.000 producten / 100 bestellingen per dag kan ondersteunen, als het gebruikte thema niet veel bronnen verbruikt en u geen misbruik maakt van andere modules (plug-ins).

Optimalisatie van broncode WP-thema's, modules (WP-plug-ins) en database optimalisatie er zijn ook twee aspecten waar we heel voorzichtig mee moeten zijn.

Ik merkte laatst dat een online winkel van maten modehet begint enorm veel RAM-bronnen verbruiken en CPU op een dedicated server genereus. Dit hoge verbruik van bronnen leidde tot een verhoogde "belasting" op de server en een lange laadtijd van de online winkelpagina's.

Wanneer we een onterecht hoge belasting van een webserver constateren, is het goed om eerst de oorzaken goed te onderzoeken alvorens actie te ondernemen.

In de database zag ik dat de tabel "wp_woocommerce_sessions"Het is enorm. Het had meer dan 6 GB. Een enorm volume voor een tabel in een database die normaal gesproken niet groter was dan 100 MB in totaal.

wat is wp_woocommerce_sessies?

Zoals we aan zijn naam kunnen raden, is de tafel "wp_woocommerce_sessions”Bevat PHP-sessies (PHP-sessies).
Deze sessies zijn acties van websitegebruikers (of webrobots) en bereiken de database meestal via cookies. in wp_woocommerce_sessies zijn opgeslagen gegevens over de producten die door gebruikers in het winkelwagentje zijn geplaatst, coupons, verzendkosten, klantgegevens en vele andere informatie met betrekking tot het bestelproces van het product.

Deze sessies worden gemaakt, ongeacht of de gebruiker op de site is geregistreerd of niet, en zouden normaal gesproken na een tijdje moeten verlopen en automatisch worden verwijderd.

Helaas gebeurt het niet altijd dat deze sessies worden verwijderd en in sommige gevallen blijven ze permanent opgeslagen in wp_woocommerce_sessions, waardoor deze tabel een vrij groot volume bereikt.

Hoe de tabel te verwijderen? wp_woocommerce_sessions van SQL?

1. gaan naar Overzicht →  WooCommerce →  Status →  Tools (tabblad).

2. Scroll naar beneden naar de optie "Klantsessies wissen“. Voorzichtig! Het verwijderen van klantsessies betekent het verwijderen van alle producten die ze in de winkelwagen hebben geplaatst. Als er tijdens het verwijderen van deze sessies klanten zijn die producten in de winkelwagen hebben, verdwijnen deze en wordt de eventuele online bestelling niet voltooid.

3. Klik op "Wissen" en bevestig de bewerking.

Op dit moment is de tabel "wp_woocommerce_sessions" is leeg, dus alle shopsessies van klanten zijn verwijderd.

Het probleem is verre van opgelost. SQL-tabel wp_woocommerce_sessions gaat er weer gegevens in verzamelen en krijgt standaard weer verhoudingen, wat niet wenselijk is.

Hoe voorkomen we dat clientsessies permanent worden opgeslagen? WooCommerce - wp_woocommerce_sessions?

Ik heb hierboven laten zien hoe de tabel "wp_woocommerce_sessions" uit de database, maar het probleem zal na een paar dagen opnieuw verschijnen wanneer clientsessies weer worden verzameld.

Voor WooCommerce 2.5 werden clientsessies vastgelegd door middel van cookies, om later in de tabel te worden opgeslagen WordPress "wp_options'.
Bij grotere winkels heeft deze werkwijze vaak tot rampen geleid. “Wp_options"De vitale tafel zijn van" WordPress, gebruikt door algemene opties en instellingen. Identificeren en handmatig verwijderen van klantsessies die zijn opgeslagen in wp_options het was geen gemakkelijke klus.
Prestatie WooCommerce ze waren niet de beste, en schaalbaarheid in de loop van de tijd was een gevoelig punt.

Met de lancering WooCommerce 2.5 in 2015, de ontwikkelaars WooCommerce introduceerde een nieuw systeem voor het afhandelen en opslaan van sessies WooCommercegebaseerd op WP Sessions-manager. Dit systeem leidde tot de opkomst wp_woocommerce_sessions. Een speciale tabel voor clientsessies, die in de database geen interactie heeft met andere tabellen. Bij grote fouten moeten de verliezen minimaal zijn.

Van wat ik heb waargenomen, zijn de online winkels eerder gelanceerd WooCommerce 2.5 en die in de loop van de tijd constant zijn bijgewerkt, hebben enkele problemen met betrekking tot het automatisch verwijderen van clientsessies. Het is hoogstwaarschijnlijk een bug die verscheen op een nieuwere versie van WooCommerce 2.5 of een plug-in WordPress / WooCommerce die de updates niet heeft bijgehouden.

In mijn geval was het een conflict met een functie die aan het bestand was toegevoegd functions.php van het thema, en welke voorkomt automatische verwijdering na een tijd van verlopen sessies van woocommerce_sessions.
Als u met een dergelijk probleem wordt geconfronteerd, moet u alle mogelijke oorzaken zorgvuldig onderzoeken. SQL-fout, SQL-permissies, Cron Job, conflicten met andere plug-ins en last but not least controleer de wijzigingen die u in de code in de loop van de tijd hebt aangebracht.

ik zag dat WooCommerce biedt voor slechts $ 29 een plug-in aan die klantsessies kan beheren. "Wis winkelwagen en sessies voor WooCommerce“. Naast de geplande verwijdering van sessies heeft de module natuurlijk verschillende hulpmiddelen die u kunnen helpen.

Een eenvoudigere optie geplande verwijdering van "woocommerce_sessions”Met tussenpozen van één dag, is beschikbaar met de volgende code in 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();
}

Laat een reactie achter als je hulp nodig hebt of een andere oplossing hebt.

Gepassioneerd door techniek schrijf ik met plezier verder StealthSettings.com sinds 2006. Ik heb uitgebreide ervaring met besturingssystemen: macOS, Windows şi Linux, maar ook in programmeertalen en blogplatforms (WordPress) en voor online winkels (WooCommerce, Magento, PrestaShop).

Hoe werkt het? » Tweaks & Hacks » te groot wp_woocommerce_sessions in database [Hoe te repareren]

1 gedachte over “Te groot wp_woocommerce_sessions in database [Oplossen]"

  1. Ik heb geen manier om de gegevens te verwijderen weegt 500mb en ik heb een limiet van 1000mb per minuut om alles te verwijderen is weer helemaal vol... .een oplossing?

    Antwoorden
Laat een bericht achter