For store wp_woocommerce_sessions i databasen [How-To Fix]
Som jeg sa i andre artikler, er WooCommerce en stadig mer robust og fleksibel modul, i stand til å gjøre WordPress til en ideell nettbutikk for en bedrift i begynnelsen.
Innhold
For en nettbutikk av beskjeden størrelse kan WooCommerce også kjøres på en “delt hosting”, å enkelt kunne støtte 5000 produkter / 100 bestillinger per dag, hvis temaet som brukes ikke bruker mange ressurser og du ikke misbruker andre moduler (plugins).
Kildekodeoptimalisering fra temaet (WP Themes), moduler (WP Plugins) og databaseoptimalisering det er også to aspekter som vi må være veldig forsiktige med.
Jeg la merke til her om dagen at en liten nettbutikk starter opp bruker enorme mengder RAM og CPU-ressurser på en dedikert server sjenerøs. Dette høye ressursforbruket førte implisitt til en “laste” økt på serveren og lang innlastingstid for nettbutikksidene.
Når vi merker en urimelig høy belastning på en webserver, er det greit å undersøke årsakene nøye, før du tar noen tiltak.
I databasen la jeg merke til at tabellen “wp_woocommerce_sessions” det er enormt stort. Den var over 6 GB. Et enormt volum for en tabell i en database som normalt ikke oversteg 100 MB totalt.

Hva er wp_woocommerce_sessions?
Som vi kan intuit fra navnet, bordet “wp_woocommerce_sessions” inneholder PHP-økter (PHP-økter).
Disse øktene er handlinger utført av nettstedsbrukere (eller webroboter) og som oftest havner de i databasen gjennom informasjonskapsler. I wp_woocommerce_sessions lagres data om produktene plassert av brukere i handlekurven, kuponger, fraktgebyrer, kundedata og mye annen informasjon knyttet til produktbestillingsprosessen.
Disse øktene opprettes selv om brukeren er registrert på siden eller ikke, og må normalt utløpe og slettes automatisk etter en stund.
Dessverre skjer det ikke alltid at disse øktene blir slettet, og i noen tilfeller forblir de permanent lagret i wp_woocommerce_sessions, noe som gjør at denne tabellen når et ganske stort volum.
Hvordan sletter vi tabellen? wp_woocommerce_sessions din SQL?
1. Vi går til Dashbord → WooCommerce → Status → Verktøy (fane).
2. Rull ned til alternativet “Tydelige kundeøkter“. Forsiktig! Sletting av kundeøkter betyr å slette alle produkter plassert av dem i handlekurven. Hvis det mens du sletter disse øktene er kunder som har produkter i handlekurven, vil de forsvinne, og den eventuelle nettbestillingen vil ikke bli gjennomført.
3. Klikk “Klar” og bekrefte operasjonen.

I dette øyeblikk bordet “wp_woocommerce_sessions” er tom, så alle kundekjøpsøkter er slettet.
Problemet er langt fra løst. SQL-tabellen wp_woocommerce_sessions vil samle data i den igjen, og som standard vil den få proporsjoner igjen, noe som ikke er ønskelig.
Hvordan stopper vi kundeøkter fra å bli permanent lagret i WooCommerce – wp_woocommerce_sessions?
Jeg viste ovenfor hvordan bordet kan tømmes “wp_woocommerce_sessions” fra databasen, men problemet vil dukke opp igjen etter noen dager når klientøktene samles igjen.
Før WooCommerce 2.5 ble kundeøkter fanget opp gjennom informasjonskapsler, og deretter lagret i WordPress-tabellen “wp_options“.
For større butikker førte denne metoden ofte til katastrofer. “wp_options” å være den vitale tabellen i WordPress, brukt av alternativer og generelle innstillinger. Identifikasjon og manuell sletting av kundeøkter lagret i wp_options det var ikke akkurat en lett jobb.
WooCommerce-ytelsen var ikke den beste, og skalerbarhet over tid var et følsomt punkt.
Med utgivelsen av WooCommerce 2.5 i 2015 introduserte WooCommerce-utviklere et nytt system for håndtering og lagring av WooCommerce-økter, basert på WP Sessions Manager. Acest sistem a dus aparitia wp_woocommerce_sessions. Un tabel dedicat pentru sesiunile clientilor, care in baza de date sa nu interactioneze cu alte tabele. In cazul unor erori majore pierderile sa fie minime.
Din ceea ce am observat, magazinele online lansate inainte de WooCommerce 2.5 si care au primit actualizari constante in timp, au unele probleme in ceea ce priveste stergerea automata a sesiunilor client. Cel mai probabil este vorba despre un bug aparut pe o versiune mai noua de WooCommerce 2.5 sau de un plugin WordPress / WooCommerce care nu a tinut pasul cu actualizarile.
In cazul meu a fost vorba de un conflict cu o functie adaugata in fisierul functions.php al temei, si care impiedica stergerea automata dupa un timp al sesiunilor expirate din woocommerce_sessions.
Hvis du står overfor et slikt problem, må du nøye undersøke alle mulige årsaker. SQL-feil, SQL-tillatelser, Cron Job, konflikter med andre plugins og sist men ikke minst, sjekk endringene du har gjort i koden over tid.
Jeg så at WooCommerce tilbyr for bare $29 en plugin som er i stand til å administrere kundeøkter. “Tøm handlekurv og økter for WooCommerce“. Foruten planlagt sletting av økter, har modulen selvfølgelig flere verktøy som kan hjelpe deg.
Et enklere alternativ planlagt sletting a “woocommerce_sessions” med en dags mellomrom, er tilgjengelig med følgende kode i 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();
}
Legg igjen en kommentar hvis du trenger hjelp eller har en annen løsning.
For store wp_woocommerce_sessions i databasen [How-To Fix]
Hva er nytt
Om Stealth
Lidenskapelig opptatt av teknologi, skriver jeg med glede på StealthSettings.com siden 2006. Jeg har rik erfaring innen operativsystemer: macOS, Windows og Linux, men også innen programmeringsspråk og plattformer for blogging (WordPress) og for nettbutikker (WooCommerce, Magento, PrestaShop).
Se alle innlegg av StealthDu kan også være interessert i...
En tenkte på “For store wp_woocommerce_sessions i databasen [How-To Fix]”
Jeg har ingen mulighet til å slette dataene. Den veier 500MB og jeg har en grense på 1000MB. I det øyeblikket jeg sletter alt, fylles det helt opp igjen.….noen løsning?