Príliš veľké wp_woocommerce_relácií v databáze [Ako opraviť]

Ako som už povedal v iných článkoch, WooCommerce je to stále robustnejší a flexibilnejší modul, schopný transformácie WordPress intr-un Ideálny online obchod pre začínajúci podnik.

Pre internetový obchod veľ modeste, WooCommerce dá sa spustiť aj na „zdieľanom hostingu“, pričom dokáže bez problémov podporovať 5.000 produktov / 100 objednávok denne, ak použitá téma nespotrebováva veľa zdrojov a nezneužívate iné moduly (pluginy).

Optimalizácia zdrojového kódu WP Témy, moduly (WP Pluginy) a optimalizácia databázy sú tiež dva aspekty, na ktoré si musíme dávať veľký pozor.

Nedávno som si všimol, že internetový obchod veľkostí modezačalo to spotrebovať enormne veľa zdrojov RAM a CPU na dedikovanom serveri veľkorysý. Táto vysoká spotreba zdrojov viedla k zvýšenému „načítaniu“ servera a dlhému času načítania stránok online obchodu.

Keď spozorujeme neoprávnene vysoké zaťaženie webového servera, je dobré pred akýmikoľvek krokmi starostlivo preskúmať príčiny.

V databáze som si všimol, že tabuľka „wp_woocommerce_sessions"Je to obrovské. Mal cez 6 GB. Obrovský objem tabuľky v databáze, ktorý za normálnych okolností celkovo nepresiahol 100 MB.

čo je wp_woocommerce_relácií ?

Ako môžeme hádať z jeho mena, tabuľka „wp_woocommerce_sessions”Obsahuje relácie PHP (Relácie PHP).
Tieto relácie sú akciami používateľov stránok (alebo webových robotov) a väčšinou končia v databáze prostredníctvom súborov cookie. V wp_woocommerce_sessions sú uložené údaje o produktoch, ktoré používatelia umiestnili do nákupného košíka, kupóny, poplatky za dopravu, údaje o zákazníkoch a mnoho ďalších informácií súvisiacich s procesom objednávania produktov.

Tieto relácie sa vytvárajú bez ohľadu na to, či je používateľ na webe zaregistrovaný, alebo nie, a zvyčajne by mali po určitej dobe automaticky vypršať a vymazať.

Žiaľ, nie vždy sa tieto relácie vymažú a v niektorých prípadoch zostanú natrvalo uložené vo wp_woocommerce_sessions, vďaka čomu táto tabuľka dosahuje pomerne veľký objem.

Ako vymazať tabuľku wp_woocommerce_sessions z SQL?

1. prejsť na Informačný panel →  WooCommerce →  postavenie →  náradie (záložka).

2. Prejdite nadol na možnosť „Vymazať relácie zákazníka„. Opatrne! Vymazať relácie zákazníka znamená vymazať všetky produkty, ktoré vložili do nákupného košíka. Ak počas odstránenia týchto relácií existujú zákazníci, ktorí majú produkty v košíku, zmiznú a možná online objednávka nebude dokončená.

3. Kliknite na „Vymazať“ a potvrďte operáciu.

V tejto chvíli tabuľka "wp_woocommerce_sessions" je prázdny, takže všetky nákupné relácie zákazníkov boli odstránené.

Problém nie je ani zďaleka vyriešený. SQL tabuľka wp_woocommerce_sessions v ňom bude opäť zbierať dáta a štandardne dostane opäť proporcie, čo nie je žiaduce.

Ako zabránime trvalému ukladaniu relácií klienta WooCommerce - wp_woocommerce_sessions?

Vyššie som ukázal, ako tabuľka "wp_woocommerce_sessions“ z databázy, ale problém sa znova objaví po niekoľkých dňoch, keď sa relácie klientov znova zhromaždia.

Pred WooCommerce 2.5 boli relácie klientov zachytené prostredníctvom súborov cookie, ktoré sa neskôr uložili do tabuľky WordPress "wp_options".
Vo väčších predajniach táto metóda často viedla ku katastrofám. "Wp_options„Byť životne dôležitým stolom WordPress, používané všeobecnými možnosťami a nastaveniami. Identifikácia a manuálne odstránenie klientskych relácií uložených v wp_options nebola to ľahká práca.
predstavenie WooCommerce neboli najlepšie a škálovateľnosť v priebehu času bola citlivým bodom.

so začatím WooCommerce 2.5 v roku 2015 vývojári WooCommerce predstavil nový systém spracovania a ukladania relácií WooCommerceNa základe Manažér relácií WP. Tento systém viedol k vzniku wp_woocommerce_sessions. Špeciálna tabuľka pre relácie klienta, ktorá v databáze neinteraguje s inými tabuľkami. V prípade väčších chýb by straty mali byť minimálne.

Z toho, čo som si všimol, internetové obchody boli spustené skôr WooCommerce 2.5 a ktoré v priebehu času dostávali neustále aktualizácie, majú určité problémy s automatickým odstraňovaním klientskych relácií. S najväčšou pravdepodobnosťou ide o chybu, ktorá sa objavila na novšej verzii WooCommerce 2.5 alebo plugin WordPress / WooCommerce ktorá nedrží krok s aktualizáciami.

V mojom prípade išlo o konflikt s funkciou pridanou do súboru functions.php témy a ktoré zabraňuje automatickému mazaniu po čase relácií, ktorým vypršala platnosť woocommerce_sessions.
Ak čelíte takémuto problému, musíte starostlivo preskúmať všetky možné príčiny. Chyba SQL, oprávnenia SQL, Cron Job, konflikty s inými doplnkami a v neposlednom rade skontrolujte zmeny, ktoré ste v kóde vykonali v priebehu času.

videl som to WooCommerce ponúka len za 29 USD doplnok schopný spravovať zákaznícke relácie. "Vymazať košík a relácie pre WooCommerce„. Okrem plánovaného mazania relácií má modul samozrejme niekoľko nástrojov, ktoré by vám mohli pomôcť.

Jednoduchšia možnosť plánované vymazanie „woocommerce_sessions„V jednodňových intervaloch, je k dispozícii s nasledujúcim kódom v jazyku 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();
}

Ak potrebujete pomoc alebo máte iné riešenie, zanechajte komentár.

Zanietený technológiou, s radosťou píšem na StealthSettings.com od roku 2006. Mám bohaté skúsenosti s operačnými systémami: macOS, Windows a Linux, ako aj s programovacími jazykmi a platformami pre blogovanie (WordPress) a pre online obchody (WooCommerce, Magento, PrestaShop).

Ako » Vylepšenia a hacky » Príliš veľké wp_woocommerce_relácií v databáze [Ako opraviť]

1 myšlienka na tému „Príliš veľké wp_woocommerce_sessions v databáze [Ako opraviť]"

  1. Nemám ako vymazať dáta vážia 500mb a mám limit 1000mb za minútu na vymazanie všetko je znova úplne zaplnené... .nejaké riešenie?

    odpoveď
Pridať komentár