ved

1

For store wp_woocommerce_sessions i databasen [How-To Fix]

For store wp_woocommerce_sessions i databasen [How-To Fix]

1

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.

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 DashbordWooCommerceStatusVerktø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. Dette systemet førte til fremveksten wp_woocommerce_sessions. En dedikert tabell for klientøkter, som i databasen ikke skal samhandle med andre tabeller. Ved større feil bør tapene være minimale.

Ut fra det jeg har observert har nettbutikker lansert før WooCommerce 2.5 og som mottok konstante oppdateringer over tid, noen problemer med automatisk sletting av kundeøkter. Det er mest sannsynlig en feil som dukket opp på en nyere versjon av WooCommerce 2.5 eller en WordPress / WooCommerce-plugin som ikke har holdt tritt med oppdateringer.

I mitt tilfelle var det en konflikt med en funksjon lagt til filen functions.php av temaet, og hvilke forhindrer automatisk sletting etter en tid med utløpte økter fra 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]

Du kan også være interessert i...

En tenkte på “For store wp_woocommerce_sessions i databasen [How-To Fix]

  1. Carlos sier:

    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?

Legg igjen et svar

E-postadressen din vil ikke bli publisert. Nødvendige felt er merket *