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.
Egy szerény webáruházhoz 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 indul egy kis webáruház 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.
Tartalom
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 érik el az adatbázist. A wp_woocommerce_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 kerül tárolásra.
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_woocommerce_sessions mappában maradnak, 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.
Jelenleg a "wp_woocommerce_sessions" tábla üres, ezért az összes vásárlói vásárlási munkamenet törölve van.
A probléma messze nem megoldott. A wp_woocommerce_sessions SQL tábla ismét adatokat fog gyűjteni benne, és alapértelmezés szerint újra arányokat vesz fel, ami nem kívánatos.
Hogyan akadályozhatjuk meg, hogy a kliensmunkamenetek véglegesen tárolásra kerüljenek WooCommerce - wp_woocommerce_sessions
?
Fentebb bemutattam, hogyan lehet kiüríteni a "wp_woocommerce_sessions" táblát az adatbázisból, de a probléma néhány nap múlva ismét jelentkezik, amikor ismét összegyűlnek az ügyfelek.
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.
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?