Túl nagy wp_woocommerce_sessions az adatbázisban [How-To Fix]

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

Méretű webáruházhoz modeste, WooCommerce "megosztott tárhelyen" is futtatható, napi 5.000 termék / 100 rendelés könnyen támogatható, ha a használt téma nem emészt fel sok erőforrást, és nem él vissza más modulokkal (pluginokkal).

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 minap vettem észre, hogy egy méretek webáruháza modekezdődik hogy rendkívül sok RAM erőforrást emészt fel és CPU 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 felhasználóinak (vagy webrobotjainak) műveletei, és legtöbbször cookie-kon keresztül jutnak el az adatbázishoz. in wp_woocommerceA _sessions a felhasználók által a kosárba helyezett termékekről, kuponokról, szállítási díjakról, vásárlói adatokról és sok egyéb, a termékrendelési folyamattal kapcsolatos információról tárolt adatokat.

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örténik meg, hogy ezek a munkamenetek törlésre kerülnek, és bizonyos esetekben véglegesen a wp_-ban maradnak.woocommerce_sessions, ami miatt ez a tábla meglehetősen nagy mennyiséget ér el.

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.

Ebben a pillanatban a táblázat "wp_woocommerce_sessions" üres, ezért az összes vásárlói vásárlási munkamenet törölve lett.

A probléma messze nem megoldott. SQL tábla wp_woocommerceA _sessions ismét adatokat gyűjt benne, és alapértelmezés szerint újra arányokat kap, ami nem kívánatos.

Hogyan akadályozhatjuk meg, hogy a kliensmunkamenetek véglegesen tárolásra kerüljenek WooCommerce - wp_woocommerce_sessions?

Fentebb megmutattam, hogy a "wp_woocommerce_sessions" fájlt az adatbázisból, de a probléma néhány nap múlva újra megjelenik, amikor az ügyfélmunkamenetek ismét összegyűlnek.

előtt WooCommerce 2.5, az ügyfélmunkameneteket cookie-k segítségével rögzítették, hogy később elmentsék a táblázatba WordPress "wp_options".
A nagyobb üzleteknél ez a módszer gyakran katasztrófához vezetett. "Wp_options"Létfontosságú asztala WordPress, amelyet az általános opciók és beállítások használják. A tárolt ügyfélmunkamenetek azonosítása és manuális törlése wp_options nem volt könnyű munka.
Teljesítmény WooCommerce nem voltak a legjobbak, és az idő múlásával skálázhatóság érzékeny pont volt.

A dob WooCommerce 2.5 2015-ben a fejlesztők WooCommerce új munkamenet-kezelő és tárolási rendszert vezetett be WooCommerceAlapul véve: 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.

A megfigyelések alapján az online áruházak korábban indultak WooCommerce 2.5, és amelyek az idők során folyamatosan frissítéseket kaptak, vannak problémák az ügyfélmunkamenetek automatikus törlésével kapcsolatban. Valószínűleg ez egy olyan hiba, amely a következő verzióban jelent meg WooCommerce 2.5 vagy egy plugin WordPress / WooCommerce 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áttam, hogy WooCommerce mindössze 29 dollárért kínál egy bővítményt, amely képes kezelni az ügyfelek munkameneteit. "Kosár és munkamenetek törlése WooCommerce“. 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.

Technológiai rajongóként örömmel írok a StealthSettings.com-on 2006 óta. Széles körű tapasztalatom van operációs rendszerekkel: macOS, Windows és Linux, valamint programozási nyelvekkel és blogolási platformokkal (WordPress) és online áruház platformokkal (WooCommerce, Magento, PrestaShop).

Hogyan » Tweaks & Hacks » Túl nagy wp_woocommerce_sessions az adatbázisban [How-To Fix]

1 gondolat a következőről: „Túl nagy wp_woocommerce_sessions az adatbázisban [How-To Fix]"

  1. Nincs módom törölni az 500 MB súlyú adatot, és 1000 mb/perc korlátom van a törléshez, minden újra teljesen kitöltött… .valami megoldás?

    Válasz
Írj hozzászólást