For stor wp_woocommerce_økter i databasen [Slik fikser du]

Som jeg sa i andre artikler, WooCommerce det er en stadig mer robust og fleksibel modul, i stand til å transformere WordPress en Ideell nettbutikk for en nyetablering.

For en nettbutikk av størrelse modeste, WooCommerce den kan også kjøres på "shared hosting", og kan enkelt støtte 5.000 produkter / 100 bestillinger per dag, dersom temaet som brukes ikke bruker mange ressurser og du ikke misbruker andre moduler (plugins).

Optimalisering av kildekode WP Temaer, moduler (WP Plugins) og database optimalisering det er også to aspekter som vi trenger å være veldig forsiktige med.

Jeg la merke til her om dagen at en nettbutikk i størrelser modedet starter å forbruke enormt mange RAM-ressurser og CPU på en dedikert server sjenerøs. Dette høye ressursforbruket førte til økt "belastning" på serveren og lang lastetid på nettbutikkens sider.

Når vi merker en uforsvarlig høy belastning på en webserver, er det bra å undersøke årsakene nøye før du tar noen handling.

I databasen la jeg merke til at tabellen "wp_woocommerce_sessions"Den er enorm. Den hadde over 6 GB. Et stort volum for en tabell i en database som normalt ikke overstiger 100 MB totalt.

hva er wp_woocommerce_økter ?

Som vi kan gjette ut fra navnet hans, er tabellen "wp_woocommerce_sessions”Inneholder PHP-økter (PHP-økter).
Disse øktene er handlinger fra nettsidebrukere (eller webroboter) og som oftest når de databasen gjennom informasjonskapsler. i wp_woocommerce_sessions er lagret data om produktene plassert av brukere i handlekurven, kuponger, fraktgebyrer, kundedata og mye annen informasjon relatert til produktbestillingsprosessen.

Disse øktene opprettes enten brukeren er registrert på nettstedet eller ikke, og normalt skal 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 slette tabellen wp_woocommerce_sessions fra SQL?

1. gå til Dashbord →  WooCommerce →  status →  verktøy (fane).

2. Bla ned til alternativet "Fjern kundesessioner“. Forsiktig! Slette kundesessioner betyr å slette alle produktene de legger i handlekurven. Hvis det er kunder som har produkter i handlekurven mens du sletter disse øktene, forsvinner de og den mulige online bestillingen blir ikke fullført.

3. Klikk "Slett" og bekreft operasjonen.

I dette øyeblikk tabellen "wp_woocommerce_sessions" er tom, så alle kundekjøpsøkter er slettet.

Problemet er langt fra løst. SQL-tabell 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 klientøkter fra å bli permanent lagret i WooCommerce - wp_woocommerce_sessions?

Jeg har vist ovenfor hvordan tabellen "wp_woocommerce_sessions" fra databasen, men problemet vil dukke opp igjen etter noen dager når klientøkter vil samle seg igjen.

før WooCommerce 2.5 ble klientøkter fanget opp gjennom informasjonskapsler, for å bli lagret i tabellen senere WordPress "wp_options".
For større butikker har denne metoden ofte ført til katastrofer. «Wp_options«Å være det vitale bordet til WordPress, brukt av generelle alternativer og innstillinger. Identifisere og manuelt slette klientøkter lagret i wp_options det var ikke en enkel jobb.
Ytelse WooCommerce de var ikke de beste, og skalerbarhet over tid var et følsomt punkt.

Med lanseringen WooCommerce 2.5 i 2015, utviklerne WooCommerce introduserte et nytt økthåndterings- og lagringssystem WooCommerceBasert på WP Sessions Manager. Dette systemet førte til fremveksten wp_woocommerce_sessions. En dedikert tabell for klientsessioner, som i databasen ikke samhandler med andre tabeller. Ved store feil, bør tapene være minimale.

Fra det jeg har observert, lanserte nettbutikkene før WooCommerce 2.5 og som har mottatt konstante oppdateringer over tid, har noen problemer angående automatisk sletting av klientøkter. Det er mest sannsynlig en feil som dukket opp på en nyere versjon av WooCommerce 2.5 eller en plugin WordPress / WooCommerce som ikke har fulgt med på oppdateringene.

I mitt tilfelle var det en konflikt med en funksjon som ble 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 undersøke alle mulige årsaker nøye. 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“. I tillegg til planlagt sletting av økter, har modulen selvfølgelig flere verktøy som kan hjelpe deg.

Et enklere alternativ planlagt sletting av “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.

Teknologiinteressert, jeg skriver med glede på StealthSettings.com siden 2006. Jeg har bred erfaring med operativsystemer: macOS, Windows og Linux, samt programmeringsspråk og bloggplattformer (WordPress) og for nettbutikker (WooCommerce, Magento, PrestaShop).

Hvordan » Tweaks & Hacks » For stor wp_woocommerce_økter i databasen [Slik fikser du]

1 tanke om “For stor wp_woocommerce_økter i databasen [Slik fikser du]"

  1. Jeg har ingen måte å slette dataene veier 500mb og jeg har en grense på 1000mb per minutt for å slette alt er helt fylt igjen ... .noen løsning?

    Svar
Legg igjen en kommentar