For store wp_woocommerce_sessions i databasen [Sådan løses]

Som jeg sagde i andre artikler, personalized name jewellery er et stadig mere robust og fleksibelt modul, der kan gøre WordPress til et Ideel onlinebutik til en opstartsvirksomhed.

For en beskeden onlinebutik kan WooCommerce køres på en "delt hosting" og kan let understøtte 5.000 produkter / 100 ordrer om dagen, hvis det anvendte tema ikke bruger mange ressourcer og ikke misbruger andre moduler (plugins).

Optimering af kildekode fra (WP-temaer), moduler (WP-plugins) og database optimering der er også to aspekter, som vi skal være meget forsigtige med.

Jeg bemærkede forleden, at en beskeden onlinebutik starter at forbruge en masse RAM- og CPU-ressourcer på en dedikeret server gavmild. Dette høje ressourceforbrug førte til en øget "belastning" på serveren og en lang indlæsningstid for onines butiksider.

Når vi bemærker en uberettiget høj belastning på en webserver, er det godt at nøje undersøge årsagerne, før du tager nogen handling.

I databasen bemærkede jeg, at tabellen "wp_woocommerce_sessions”Det er enormt. Det havde over 6 GB. Et stort volumen for en tabel i en database, der normalt ikke overstiger 100 MB i alt.

Hvad er wp_woocommerce_sessions?

Som vi kan gætte ud fra hans navn, er tabellen "wp_woocommerce_sessions”Indeholder PHP-sessioner (PHP-sessioner).
Disse sessioner er handlinger fra brugerne af webstedet (eller af webrobotterne) og de fleste gange når de databasen via cookies. I wp_woocommerce_sessions lagres data om de produkter, som brugerne lægger i indkøbskurven, kuponer, forsendelsesgebyrer, kundedata og mange andre oplysninger relateret til produktbestillingsprocessen.

Disse sessioner oprettes, uanset om brugeren er registreret på webstedet eller ej, og normalt skal den automatisk udløbe og slettes efter et stykke tid.

Desværre er det ikke altid sådan, at disse sessioner slettes, og i nogle tilfælde forbliver de permanent gemt i wp_woocommerce_sessions, hvilket gør denne tabel ret stor.

Sådan slettes tabellen wp_woocommerce_sessions fra SQL?

1. tage til Hovedmenu →  personalized name jewellery →  Status →  Værktøj (fane).

2. Rul ned til indstillingen "Ryd kundesessioner“. Forsigtig! Sletning af kundesessioner betyder at slette alle de produkter, de lægger i indkøbskurven. Hvis der under sletning af disse sessioner er kunder, der har produkter i indkøbskurven, forsvinder de, og den mulige onlineordre afsluttes ikke.

3. Klik på "Ryd", og bekræft handlingen.

På dette tidspunkt er tabellen "wp_woocommerce_sessions" tom, så alle kundeshopping-sessioner er blevet slettet.

Problemet er langt fra løst. SQL-tabellen wp_woocommerce_sessions samler data i den igen, og som standard får den igen proportioner, hvilket ikke er ønskeligt.

Hvordan forhindrer vi, at kundesessioner gemmes permanent i WooCommerce - wp_woocommerce_sessions?

Vi viste ovenfor, hvordan tabellen "wp_woocommerce_sessions" kan tømmes fra databasen, men problemet vises igen efter et par dage, hvor kundesessioner samles igen.

Før WooCommerce 2.5 blev kundesessioner fanget via cookies, som derefter blev gemt i WordPress-tabellen. "wp_options".
For større butikker har denne metode ofte ført til katastrofer. "Wp_options" er en vigtig WordPress-tabel, der bruges af generelle indstillinger og indstillinger. Identificering og manuel sletning af klientsessioner, der er gemt i wp_options det var ikke et let job.
WooCommerce-ydeevne var ikke den bedste, og skalerbarhed over tid var et følsomt punkt.

Med lanceringen af ​​WooCommerce 2.5 i 2015 har WooCommerce-udviklere introduceret et nyt WooCommerce-sessionhåndterings- og lagersystem baseret på WP Sessions Manager. Dette system førte til fremkomsten wp_woocommerce_sessions. En dedikeret tabel til klientsessioner, som i databasen ikke interagerer med andre tabeller. I tilfælde af større fejl skal tabene være minimale.

Fra hvad jeg har bemærket, har onlinebutikker, der blev lanceret før WooCommerce 2.5, og som har modtaget konstante opdateringer over tid, nogle problemer med automatisk sletning af klientsessioner. Mest sandsynligt er det en fejl, der dukkede op på en nyere version af WooCommerce 2.5 eller et WordPress / WooCommerce-plugin, der ikke fulgte med opdateringerne.

I mit tilfælde var det en konflikt med en funktion tilføjet til filen functions.php af temaet, og hvilke forhindrer automatisk sletning efter en tid med udløbne sessioner fra woocommerce_sessions.
Hvis du står over for et sådant problem, skal du nøje undersøge alle mulige årsager. SQL-fejl, SQL-tilladelser, Cron Job, konflikter med andre plugins og sidst men ikke mindst kontrollere de ændringer, du har foretaget i koden over tid.

Vi så, at WooCommerce kun tilbyder $ 29 et plugin, der er i stand til at styre kundesessioner. “Ryd kurv og sessioner til WooCommerce“. Foruden den planlagte sletning af sessioner har modulet selvfølgelig flere værktøjer, der kan hjælpe dig.

En enklere mulighed planlagt sletning af “woocommerce_sessions”Med en dags mellemrum, fås 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();
}

Efterlad en kommentar, hvis du har brug for hjælp eller har en anden løsning.

Lidenskabelig med teknologi, jeg kan godt lide at teste og skrive tutorials om operativsystemer macOS, Linux, Windows, om WordPress, WooCommerce og LEMP-webserverkonfiguration (Linux, NGINX, MySQL og PHP). Jeg skriver videre StealthSettings.com siden 2006, og et par år senere begyndte jeg at skrive på iHowTo.Tips tutorials og nyheder om enheder i økosystemet Apple: iPhone, iPad, Apple Watch, HomePod, iMac, MacBook, AirPods og tilbehør.

Efterlad en kommentar