Kao što sam rekao u drugim člancima, WooCommerce je sve robusniji i fleksibilniji modul, sposoban pretvoriti WordPress u idealna online trgovina za posao na početku.
sadržaj
Za internetsku trgovinu skromne veličine, WooCommerce se također može pokrenuti na “zajednički hosting”, biti u mogućnosti jednostavno podržati 5000 proizvoda / 100 narudžbi dnevno, ako korištena tema ne troši mnogo resursa i ne zlorabite druge module (dodatke).
Optimizacija izvornog koda od teme (WP Themes), modula (WP Plugins) i optimizacija baze podataka postoje i dva aspekta na koje moramo biti vrlo oprezni.
Primijetio sam neki dan da počinje s radom mala online trgovina troše enormne količine RAM-a i CPU resursa na namjenskom poslužitelju velikodušan. Ova velika potrošnja resursa implicitno je dovela do a “opterećenje” povećano na poslužitelju i dugo vrijeme učitavanja onine stranica trgovine.
Kada primijetimo neopravdano veliko opterećenje web poslužitelja, dobro je pažljivo istražiti uzroke, prije poduzimanja bilo kakvih mjera.
U bazi podataka primijetio sam da tablica “wp_woocommerce_sessions” enormno je velik. Bilo je preko 6 GB. Ogroman volumen za tablicu u bazi podataka koja obično ne prelazi ukupno 100 MB.

Što je wp_woocommerce_sessions?
Kao što možemo zaključiti iz njegovog naziva, stol “wp_woocommerce_sessions” sadrži PHP sesije (PHP sesije).
Te su sesije radnje korisnika stranice (ili web robota) i većinu vremena završavaju u bazi podataka putem kolačića. U wp_woocommerce_sessions pohranjuju se podaci o proizvodima koje su korisnici stavili u košaricu, kuponi, naknade za dostavu, podaci o kupcima i mnoge druge informacije vezane uz proces naručivanja proizvoda.
Te se sesije stvaraju čak i ako je korisnik registriran na stranici ili ne i obično moraju isteći i automatski se izbrisati nakon nekog vremena.
Nažalost, ne događa se uvijek da se te sesije izbrišu i, u nekim slučajevima, ostaju trajno pohranjene u wp_woocommerce_sessions, zbog čega ova tablica doseže prilično veliki volumen.
Kako da izbrišemo tablicu? wp_woocommerce_sessions din SQL?
1. Idemo na Nadzorna ploča → Prometnica → Status → Alati (kartica).
2. Pomaknite se prema dolje do opcije “Očistite sesije kupaca“. oprezno! Brisanje korisničkih sesija znači brisanje svih proizvoda koje su oni stavili u košaricu. Ako dok brišete ove sesije postoje kupci koji imaju proizvode u košarici, oni će nestati, a eventualna online narudžba neće biti dovršena.
3. Kliknite “Jasan” i potvrdite operaciju.

U ovom trenutku stol “wp_woocommerce_sessions” je prazan, tako da su sve kupovne sesije kupaca izbrisane.
Problem je daleko od rješenja. SQL tablica wp_woocommerce_sessions će opet skupljati podatke u sebi i standardno će opet dobiti proporcije, što nije poželjno.
Kako spriječiti da se sesije korisnika trajno pohranjuju u WooCommerceu – wp_woocommerce_sessions?
Gore sam pokazao kako se stol može isprazniti “wp_woocommerce_sessions” iz baze podataka, no problem će se ponovno pojaviti nakon nekoliko dana kada se ponovno skupe klijentske sesije.
Prije WooCommerce 2.5, korisničke sesije bilježile su se kolačićima, a zatim spremale u WordPress tablicu “wp_options“.
Za veće trgovine ova je metoda često dovodila do katastrofa. “wp_opcije” vitalna tablica WordPressa, koju koriste opcije i opće postavke. Identifikacija i ručno brisanje korisničkih sesija pohranjenih u wp_options nije to baš bio lak posao.
Performanse WooCommercea nisu bile najbolje, a skalabilnost tijekom vremena bila je osjetljiva točka.
Izdavanjem WooCommerce 2.5 2015., WooCommerce programeri predstavili su novi sustav za rukovanje i pohranu WooCommerce sesija, temeljen na Upravitelj WP sesija. Ovaj je sustav doveo do nastanka wp_woocommerce_sessions. Namjenska tablica za klijentske sesije, koja u bazi podataka ne bi trebala komunicirati s drugim tablicama. U slučaju većih pogrešaka, gubici bi trebali biti minimalni.
Prema onome što sam primijetio, internetske trgovine pokrenute prije WooCommercea 2.5 i koje su tijekom vremena dobivale stalna ažuriranja, imaju nekih problema u vezi s automatskim brisanjem korisničkih sesija. Najvjerojatnije se radi o bugu koji se pojavio na novijoj verziji WooCommerce 2.5 ili WordPress / WooCommerce dodatku koji nije pratio ažuriranja.
U mom slučaju to je bio sukob s funkcijom dodanom datoteci functions.php teme, a koji sprječava automatsko brisanje nakon isteka vremena sesija iz woocommerce_sessions.
Ako ste suočeni s takvim problemom, morate pažljivo istražiti sve moguće uzroke. SQL pogreška, SQL dopuštenja, Cron Job, sukobi s drugim dodacima i posljednje, ali ne manje važno, provjerite promjene koje ste napravili u kodu tijekom vremena.
Vidio sam da WooCommerce nudi dodatak koji može upravljati korisničkim sesijama za samo 29 USD. “Očisti košaricu i sesije za WooCommerce“. Naravno, osim planiranog brisanja sesija, modul ima nekoliko alata koji vam mogu pomoći.
Jednostavnija opcija od planirano brisanje a “woocommerce_sessions” u razmacima od jednog dana, dostupan je sa sljedećim kodom u 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();
}
Ostavite komentar ako trebate pomoć ili imate drugo rješenje.
Ne mogu izbrisati podatke. Teži 500 MB, a ja imam ograničenje od 1000 MB. Čim sve izbrišem, ponovno se potpuno napuni.….bilo kakvo rješenje?