Som jeg sa i andre artikler, er WooCommerce en stadig mer robust og fleksibel modul, i stand til å transformere WordPress en Ideell nettbutikk for en nyetablering.
Innholdsfortegnelse
For en beskjeden nettbutikk kan WooCommerce kjøres på en "delt hosting", og kan enkelt støtte 5.000 produkter / 100 bestillinger per dag, hvis temaet som brukes ikke bruker mange ressurser og ikke misbruker andre moduler (plugins).
Optimalisering av kildekode WP Temaer, moduler (WP Plugins) og database optimalisering det er også to aspekter som vi trenger å være veldig forsiktige med.
Jeg la merke til forleden at en beskjeden nettbutikk starter å forbruke enormt mange RAM-ressurser og CPU på en dedikert server sjenerøs. Dette høye ressursforbruket førte til økt "belastning" på serveren og lang lastetid på nettbutikkens sider.
Når vi merker en uforsvarlig høy belastning på en webserver, er det bra å undersøke årsakene nøye før du tar noen handling.
I databasen la jeg merke til at tabellen "wp_woocommerce_sessions
"Den er enorm. Den hadde over 6 GB. Et stort volum for en tabell i en database som normalt ikke overstiger 100 MB totalt.

Hva er wp_woocommerce_sessions?
Som vi kan gjette ut fra navnet hans, er tabellen "wp_woocommerce_sessions
”Inneholder PHP-økter (PHP-økter).
Disse øktene er handlinger fra brukerne av nettstedet (eller av webrobotene) og de fleste ganger når de databasen via informasjonskapsler. I wp_woocommerce_sessions lagres data om produktene som er lagt av brukerne i handlekurven, kuponger, fraktkostnader, kundedata og mange andre opplysninger relatert til produktbestillingsprosessen.
Disse øktene opprettes enten brukeren er registrert på nettstedet eller ikke, og normalt skal utløpe og slettes automatisk etter en stund.
Dessverre er det ikke alltid slik at disse øktene blir slettet, og i noen tilfeller forblir de permanent lagret i wp_woocommerce_sessions, noe som gjør denne tabellen ganske stor.
Hvordan slette tabellen wp_woocommerce_sessions
fra SQL?
1. gå til Dashbord → WooCommerce → status → verktøy (fane).
2. Bla ned til alternativet "Fjern kundesessioner“. Forsiktig! Slette kundesessioner betyr å slette alle produktene de legger i handlekurven. Hvis det er kunder som har produkter i handlekurven mens du sletter disse øktene, forsvinner de og den mulige online bestillingen blir ikke fullført.
3. Klikk "Slett" og bekreft operasjonen.

På dette tidspunktet er "wp_woocommerce_sessions" -tabellen tom, så alle kundeshoppingøkter er slettet.
Problemet er langt fra løst. SQL-tabellen wp_woocommerce_sessions samler inn data i den igjen, og som standard vil den få proporsjoner igjen, noe som ikke er ønskelig.
Hvordan stopper vi at kundeøkter lagres permanent i WooCommerce - wp_woocommerce_sessions
?
Vi viste ovenfor hvordan "wp_woocommerce_sessions" -tabellen kan tømmes fra databasen, men problemet vil dukke opp igjen etter noen dager hvor kundesesjonene vil samles igjen.
Før WooCommerce 2.5 ble kundeøkter fanget opp via informasjonskapsler og deretter lagret på bordet. WordPress "wp_options
".
For større butikker har denne metoden ofte ført til katastrofer. «Wp_options«Å være det vitale bordet til WordPress, brukt av generelle alternativer og innstillinger. Identifisere og manuelt slette klientøkter lagret i wp_options
det var ikke en enkel jobb.
WooCommerce-ytelse var ikke den beste, og skalerbarhet over tid var et følsomt punkt.
Med lanseringen av WooCommerce 2.5 i 2015, har WooCommerce-utviklere introdusert et nytt WooCommerce økthåndterings- og lagringssystem, basert på WP Sessions Manager. Dette systemet førte til fremveksten wp_woocommerce_sessions
. En dedikert tabell for klientsessioner, som i databasen ikke samhandler med andre tabeller. Ved store feil, bør tapene være minimale.
Fra det jeg har sett, har nettbutikker lansert før WooCommerce 2.5 og som har fått konstante oppdateringer over tid noen problemer med automatisk sletting av klientøkter. Mest sannsynlig er det en feil som dukket opp på en nyere versjon av WooCommerce 2.5 eller en plugin WordPress / WooCommerce som ikke fulgte med på oppdateringene.
I mitt tilfelle var det en konflikt med en funksjon som ble lagt til filen functions.php
av temaet, og hvilke forhindrer automatisk sletting etter en tid med utløpte økter fra woocommerce_sessions
.
Hvis du står overfor et slikt problem, må du undersøke alle mulige årsaker nøye. SQL-feil, SQL-tillatelser, Cron Job, konflikter med andre plugins og sist men ikke minst sjekk endringene du har gjort i koden over tid.
Jeg så at WooCommerce tilbyr for bare $ 29 en plugin som kan det adminstress klientøkter. "Fjern handlevogn og økter for WooCommerce“. I tillegg til planlagt sletting av økter, har modulen selvfølgelig flere verktøy som kan hjelpe deg.
Et enklere alternativ planlagt sletting av “woocommerce_sessions
”Med en dags mellomrom, er tilgjengelig med følgende kode 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();
}
Legg igjen en kommentar hvis du trenger hjelp eller har en annen løsning.
Jeg har ingen måte å slette dataene veier 500mb og jeg har en grense på 1000mb per minutt for å slette alt er helt fylt igjen ... .noen løsning?