Som jag sa i andra artiklar, WooCommerce det är en allt mer robust och flexibel modul som kan transformeras WordPress i en Perfekt webbutik för nystartade företag.
Koppprins
För en anspråkslös webbutik, WooCommerce det kan även köras på "shared hosting", att enkelt kunna stödja 5.000 100 produkter / XNUMX beställningar per dag, om temat som används inte förbrukar många resurser och du inte missbrukar andra moduler (plugins).
Optimering av källkod WP-teman, moduler (WP-plugins) och databasoptimering Det finns också två aspekter som vi måste vara mycket försiktiga med.
Jag märkte häromdagen att en liten webbutik startar att förbruka enormt många RAM-resurser och CPU på en dedikerad server generös. Denna höga resursförbrukning ledde till en ökad "belastning" på servern och en lång laddningstid för onines butiksidor.
När vi märker en omotiverat hög belastning på en webbserver är det bra att noggrant undersöka orsakerna innan du vidtar några åtgärder.
I databasen märkte jag att tabellen "wp_woocommerce_sessions
"Den är enorm. Den hade över 6 GB. En enorm volym för en tabell i en databas som normalt inte överstiger 100 MB totalt.

Vad är wp_woocommerce_sessions?
Som vi kan gissa utifrån hans namn, bordet "wp_woocommerce_sessions
”Innehåller PHP-sessioner (PHP-sessioner).
Dessa sessioner är handlingar av webbplatsanvändare (eller webbrobotar) och för det mesta når de databasen via cookies. I wp_woocommerce_sessions lagras data om produkterna som lagts av användare i kundvagnen, kuponger, fraktavgifter, kunddata och mycket annan information relaterad till produktbeställningsprocessen.
Dessa sessioner skapas oavsett om användaren är registrerad på webbplatsen och normalt ska upphöra och raderas automatiskt efter ett tag.
Tyvärr händer det inte alltid att dessa sessioner raderas och i vissa fall förblir de permanent lagrade i wp_woocommerce_sessions, vilket gör att denna tabell når en ganska stor volym.
Hur man tar bort tabellen wp_woocommerce_sessions
från SQL?
1. gå till Dashboard → WooCommerce → Status → verktyg (flik).
2. Bläddra ner till alternativet "Rensa kundsessioner“. Försiktig! Att radera kundsessioner innebär att du tar bort alla produkter de lägger i kundvagnen. Om det finns kunder som har produkter i kundvagnen när de tas bort, kommer de att försvinna och den möjliga onlinebeställningen kommer inte att slutföras.
3. Klicka på "Rensa" och bekräfta åtgärden.

Just nu är tabellen "wp_woocommerce_sessions" tom, så alla kundshoppingsessioner har tagits bort.
Problemet är långt ifrån löst. SQL-tabellen wp_woocommerce_sessions kommer att samla in data i den igen och som standard kommer den att få proportioner igen, vilket inte är önskvärt.
Hur ser vi till att klientsessioner inte längre lagras permanent i WooCommerce - wp_woocommerce_sessions
?
Jag visade ovan hur tabellen "wp_woocommerce_sessions" kan tömmas från databasen, men problemet kommer att dyka upp igen efter några dagar då kundsessioner kommer att samlas igen.
före WooCommerce 2.5 fångades klientsessioner genom cookies, för att sparas i tabellen senare WordPress "wp_options
".
För större butiker har denna metod ofta lett till katastrofer. "Wp_options”Att vara det vitala bordet för WordTryck, används av allmänna alternativ och inställningar. Manuell identifiera och ta bort kundsessioner lagrade i wp_options
det var inte ett enkelt jobb.
Prestanda WooCommerce de var inte de bästa, och skalbarhet över tid var en känslig punkt.
Med lanseringen WooCommerce 2.5 under 2015, utvecklarna WooCommerce introducerade ett nytt sessionshanterings- och lagringssystem WooCommercebaserat på WP Sessions Manager. Detta system ledde till framväxten wp_woocommerce_sessions
. En särskild tabell för klientsessioner, som i databasen inte interagerar med andra tabeller. Vid större fel bör förlusterna vara minimala.
Från vad jag har observerat, lanserade nätbutikerna tidigare WooCommerce 2.5 och som har fått ständiga uppdateringar över tid, har vissa problem gällande automatisk radering av klientsessioner. Det är med största sannolikhet en bugg som dykt upp i en nyare version av WooCommerce 2.5 eller ett plugin WordPress / WooCommerce som inte hängt med i uppdateringarna.
I mitt fall var det en konflikt med en funktion som lagts till i filen functions.php
av temat, och vilken förhindrar automatisk radering efter en tid med utgångna sessioner från woocommerce_sessions
.
Om du står inför ett sådant problem måste du noggrant undersöka alla möjliga orsaker. SQL-fel, SQL-behörigheter, Cron Job, konflikter med andra plugins och sist men inte minst kontrollera de ändringar du gjort i koden över tiden.
jag såg det WooCommerce erbjuder för endast $29 ett plugin som kan hantera kundsessioner. "Rensa varukorg och sessioner för WooCommerce“. Naturligtvis har modulen, förutom planerad radering av sessioner, flera verktyg som kan hjälpa dig.
Ett enklare alternativ schemalagd radering av “woocommerce_sessions
”Med en dags mellanrum, finns med följande kod i 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();
}
Lämna en kommentar om du behöver hjälp eller har en annan lösning.
Jag har inget sätt att radera data väger 500mb och jag har en gräns på 1000mb per minut för att radera allt är helt ifyllt igen ... .någon lösning?