Prevelik wp_woocommerce_sessions v zbirki podatkov [Kako popraviti]

Kot sem rekel v drugih člankih, WooCommerce je vse bolj robusten in prilagodljiv modul, ki se lahko spreminja WordPress v Idealna spletna trgovina za zagonsko podjetje.

Za spletno trgovino velikosti modeste WooCommerce lahko se izvaja tudi na "deljenem gostovanju", pri čemer lahko enostavno podpira 5.000 izdelkov / 100 naročil na dan, če uporabljena tema ne porabi veliko virov in ne zlorabljate drugih modulov (vtičnikov).

Optimizacija izvorne kode Teme, moduli (vtičniki WP) in optimizacija baze podatkov obstajata tudi dva vidika, pri katerih moramo biti zelo previdni.

Pred dnevi sem opazil, da spletna trgovina velikosti modezačenja se porabiti ogromno virov RAM-a in CPU na namenskem strežniku radodarno. Ta velika poraba virov je privedla do večje "obremenitve" strežnika in dolgega časa nalaganja spletnih strani trgovin.

Ko opazimo neupravičeno veliko obremenitev spletnega strežnika, je dobro, da pred kakršnimi koli ukrepi natančno preučimo vzroke.

V zbirki podatkov sem opazil, da tabela "wp_woocommerce_sessions"Ogromno je. Imel je več kot 6 GB. Ogromen obseg tabele v zbirki podatkov, ki običajno ni presegla 100 MB.

kaj je wp_woocommerce_seje ?

Kot lahko ugibamo iz njegovega imena, tabela "wp_woocommerce_sessions”Vsebuje seje PHP (PHP seje).
Te seje so dejanja uporabnikov spletnega mesta (ali spletnih robotov) in večino časa končajo v bazi podatkov prek piškotkov. v wp_woocommerce_sessions so shranjeni podatki o izdelkih, ki so jih uporabniki dali v nakupovalno košarico, kuponi, stroški pošiljanja, podatki o strankah in številne druge informacije, povezane s postopkom naročanja izdelkov.

Te seje se ustvarijo ne glede na to, ali je uporabnik registriran na spletnem mestu ali ne, običajno pa potečejo in se čez nekaj časa samodejno izbrišejo.

Na žalost se te seje ne izbrišejo vedno in v nekaterih primerih ostanejo trajno shranjene v wp_woocommerce_sessions, zaradi česar ta tabela doseže precej velik obseg.

Kako izbrisati tabelo wp_woocommerce_sessions iz SQL?

1. pojdite na Splošno →  WooCommerce →  Status →  Orodja (zavihek).

2. Pomaknite se navzdol do možnosti "Počistite seje strank“. Previdno! Brisanje sej strank pomeni brisanje vseh izdelkov, ki jih dajo v nakupovalni voziček. Če med brisanjem teh sej obstajajo kupci, ki imajo izdelke v košarici, bodo izginili in morebitno spletno naročilo ne bo dokončano.

3. Kliknite "Počisti" in potrdite postopek.

V tem trenutku tabela "wp_woocommerce_sessions" je prazen, zato so bile vse nakupovalne seje strank izbrisane.

Problem še zdaleč ni rešen. SQL tabela wp_woocommerce_sessions bo vanj znova zbiral podatke in privzeto bo spet dobil razmerja, kar ni zaželeno.

Kako preprečimo trajno shranjevanje odjemalskih sej WooCommerce - wp_woocommerce_sessions?

Zgoraj sem pokazal, kako tabela "wp_woocommerce_sessions" iz baze podatkov, vendar se bo težava znova pojavila čez nekaj dni, ko se bodo seje odjemalcev znova zbrale.

pred WooCommerce 2.5 so bile odjemalske seje zajete s piškotki, ki bodo pozneje shranjeni v tabeli WordPress "wp_options".
Za večje trgovine je ta metoda pogosto povzročila katastrofe. “Wp_options"Biti vitalna miza WordPress, ki ga uporabljajo splošne možnosti in nastavitve. Prepoznavanje in ročno brisanje odjemalskih sej, shranjenih v wp_options ni bilo lahko delo.
Uspešnost WooCommerce niso bili najboljši, razširljivost skozi čas pa je bila občutljiva točka.

Z uvedbo WooCommerce 2.5 leta 2015, razvijalci WooCommerce predstavil nov sistem za upravljanje in shranjevanje sej WooCommercena osnovi Upravitelj sej WP. Ta sistem je privedel do nastanka wp_woocommerce_sessions. Namenska tabela za odjemalske seje, ki v zbirki podatkov ne deluje z drugimi tabelami. V primeru večjih napak naj bodo izgube minimalne.

Glede na to, kar sem opazil, so bile spletne trgovine predstavljene že prej WooCommerce 2.5 in ki so skozi čas prejemali stalne posodobitve, imajo nekaj težav v zvezi s samodejnim brisanjem odjemalskih sej. Najverjetneje gre za napako, ki se je pojavila na novejši različici WooCommerce 2.5 ali vtičnik WordPress / WooCommerce ki ni dohajal posodobitev.

V mojem primeru je šlo za konflikt s funkcijo, dodano v datoteko functions.php teme in katere preprečuje samodejno brisanje po poteku sej iz woocommerce_sessions.
Če se soočate s takšno težavo, morate natančno raziskati vse možne vzroke. Napaka SQL, dovoljenja SQL, opravilo Cron, konflikti z drugimi vtičniki in nenazadnje preverite spremembe, ki ste jih sčasoma naredili v kodi.

to sem videl WooCommerce ponuja za samo 29 USD vtičnik, ki lahko upravlja seje strank. "Počisti voziček in seje za WooCommerce“. Seveda ima modul poleg načrtovanega brisanja sej več orodij, ki bi vam lahko pomagala.

Preprostejša možnost načrtovano brisanjewoocommerce_sessions”V enodnevnih presledkih, je na voljo z naslednjo kodo v 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();
}

Pustite komentar, če potrebujete pomoč ali imate drugo rešitev.

Strasten do tehnologije, z veseljem pišem na StealthSettings.com od leta 2006. Imam bogate izkušnje s operacijskimi sistemi: macOS, Windows in Linux, ter programskimi jeziki in platformami za bloganje (WordPress) in za spletne trgovine (WooCommerce, Magento, PrestaShop).

kako » Tweaks & Hacks » Prevelik wp_woocommerce_sessions v zbirki podatkov [Kako popraviti]

1 misel na “Prevelik wp_woocommerce_sessions in Database [Kako popraviti]"

  1. Nimam načina za brisanje podatkov, ki tehtajo 500mb in imam omejitev 1000mb na minuto za brisanje vse je spet popolnoma zapolnjeno… .neka rešitev?

    Odgovori
Pustite komentar