Túl nagy wp_woocommerce_sessions az adatbázisban [Útmutató]

Ahogy más cikkekben is mondtam, WooCommerce egy egyre robusztusabb és rugalmasabb modul, amely képes a WordPress-t a Ideális online áruház egy induló vállalkozás számára.

Szerény online áruház esetében a WooCommerce futtatható "megosztott tárhelyen", és napi 5.000 termék / 100 megrendelés támogatására képes, ha az alkalmazott téma nem fogyaszt sok erőforrást, és nem él vissza más modulokkal (bővítményekkel).

Forráskód optimalizálás WP témák, modulok (WP bővítmények) és adatbázis optimalizálás két szempont is van, amelyekre nagyon vigyáznunk kell.

A napokban vettem észre, hogy egy szerény online áruház indul hogy sok RAM és CPU erőforrás fogyjon egy dedikált szerveren nagylelkű. Ez a magas erőforrás-fogyasztás a szerver megnövekedett "terheléséhez" és az onine áruház-oldalak hosszú betöltési idejéhez vezetett.

Amikor indokolatlanul nagy terhelést észlelünk egy webszerveren, jó, ha bármilyen intézkedés előtt alaposan megvizsgálja az okokat.

Az adatbázisban észrevettem, hogy a táblázat "wp_woocommerce_sessions"Ez óriási. 6 GB fölött volt. Hatalmas mennyiség az adatbázisban található táblák számára, amelyek általában nem haladták meg a 100 MB-ot.

Mi az a wp_woocommerce_sessions?

Amint a nevéből kitalálhatjuk, az asztal "wp_woocommerce_sessions”PHP munkameneteket tartalmaz (PHP munkamenetek).
Ezek a munkamenetek a webhely (vagy a webrobotok) felhasználóinak műveletei, és legtöbbször cookie-k révén jutnak el az adatbázisba. A wp_woocommerce_sessions tárolja az adatokat a felhasználók által a bevásárlókosárba helyezett termékekről, kuponokról, szállítási díjakról, vásárlói adatokról és a termékrendelési folyamathoz kapcsolódó sok egyéb információról.

Ezek a munkamenetek függetlenül attól, hogy a felhasználó regisztrálva van-e a webhelyen, létrejönnek, és általában lejárnak, és egy idő után automatikusan törölniük kell őket.

Sajnos nem mindig törlik ezeket a munkameneteket, és egyes esetekben állandóan tárolva vannak a wp_woocommerce_sessions fájlban, ami miatt ez a táblázat elég nagy.

A táblázat törlése wp_woocommerce_sessions SQL-ből?

1. megy Műszerfal →  WooCommerce →  Állapot →  Eszközök (fül).

2. Görgessen le a "Törölje az ügyfelek munkamenetét“. Óvatos! Az ügyfélszekciók törlése azt jelenti, hogy törölni kell az összes terméket, amelyet a kosárba tesznek. Ha ezeknek a munkameneteknek a törlése során vannak olyan ügyfelek, akiknek vannak termékei a kosárban, akkor azok eltűnnek, és az esetleges online megrendelés nem teljesül.

3. Kattintson a "Törlés" gombra, és erősítse meg a műveletet.

Ekkor a "wp_woocommerce_sessions" táblázat üres, ezért az összes vásárlói munkamenetet törölték.

A probléma korántsem megoldott. A wp_woocommerce_sessions SQL tábla ismét összegyűjti az adatokat, és alapértelmezés szerint ismét arányokat fog szerezni, ami nem kívánatos.

Hogyan állíthatjuk meg az ügyfelek állandó tárolását a WooCommerce szolgáltatásban - wp_woocommerce_sessions?

Fent bemutattuk, hogyan lehet a "wp_woocommerce_sessions" táblázatot kiüríteni az adatbázisból, de a probléma néhány nap múlva ismét megjelenik, amelyben az ügyfélszekciók ismét összegyűlnek.

A WooCommerce 2.5 előtt az ügyfelek munkameneteit sütik segítségével rögzítették, amelyeket aztán elmentett a WordPress táblába. "wp_options".
Nagyobb üzleteknél ez a módszer gyakran katasztrófákhoz vezetett. A "Wp_options" a WordPress létfontosságú táblázata, amelyet az általános opciók és beállítások használnak. A tárolt kliens munkamenetek azonosítása és manuális törlése wp_options nem volt könnyű munka.
A WooCommerce teljesítménye nem volt a legjobb, és az időbeli skálázhatóság érzékeny pont volt.

A WooCommerce 2.5 2015-ös elindításával a WooCommerce fejlesztői új WooCommerce munkamenetkezelő és -tároló rendszert vezettek be, amely WP Session Manager. Ez a rendszer vezetett a megjelenéshez wp_woocommerce_sessions. Dedikált tábla kliens szekciókhoz, amely az adatbázisban nem lép kölcsönhatásba más táblákkal. Nagyobb hibák esetén a veszteségeknek minimálisaknak kell lenniük.

Amit észrevettem, a WooCommerce 2.5 előtt indított online áruházak, amelyek az idő múlásával folyamatosan frissülnek, néhány problémát okoznak az ügyfélszekciók automatikus törlésével. Valószínűleg egy olyan hibáról van szó, amely a WooCommerce 2.5 újabb verzióján, vagy egy WordPress / WooCommerce pluginon jelent meg, amely nem tartott lépést a frissítésekkel.

Esetemben ellentmondás volt a fájlhoz hozzáadott funkcióval functions.php és melyik megakadályozza az automatikus törlést a lejárt munkamenetek után woocommerce_sessions.
Ha ilyen problémával szembesül, alaposan meg kell vizsgálnia az összes lehetséges okot. SQL hiba, SQL engedélyek, Cron Job ütközik más beépülő modulokkal, és nem utolsósorban ellenőrzi a kódban az idő múlásával végrehajtott változtatásokat.

Láttuk, hogy a WooCommerce csak 29 dollárért kínál olyan plugint, amely képes kezelni az ügyfelek munkamenetét. „Kosár és munkamenetek törlése a WooCommerce számára“. Természetesen a munkamenetek ütemezett törlése mellett a modul számos eszközzel rendelkezik, amelyek segíthetnek Önnek.

Egyszerűbb lehetőség ütemezett törlésewoocommerce_sessions”Egynapos időközönként, a következő kóddal érhető el: 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();
}

Ha segítségre van szüksége, vagy más megoldása van, írjon megjegyzést.

Szenvedélyes a technológiával kapcsolatban, szeretek tesztelni és oktatóanyagokat írni az operációs rendszerekről macOS, Linux, Windows, a WordPress, a WooCommerce és a LEMP webkiszolgáló konfigurációjáról (Linux, NGINX, MySQL és PHP). Írok tovább StealthSettingsA .com 2006 óta, és néhány évvel később elkezdtem írni az iHowTo.Tips oktatóanyagokat és az ökoszisztéma eszközeiről szóló híreket Apple: iPhone, iPad, Apple Nézd, HomePod, iMac, MacBook, AirPod-ok és kiegészítők.

Írj hozzászólást