Kot sem rekel v drugih člankih, je WooCommerce vse bolj robusten in prilagodljiv modul, ki se lahko preoblikuje. WordPress v Idealna spletna trgovina za zagonsko podjetje.
Za skromno spletno trgovino lahko WooCommerce deluje na "deljenem gostovanju" in lahko brez težav podpira 5.000 izdelkov / 100 naročil na dan, če uporabljena tema ne porabi veliko virov in ne zlorablja drugih modulov (vtičnikov).
Optimizacija izvorne kode Teme, moduli (vtičniki WP) in optimizacija baze podatkov obstajata tudi dva vidika, pri katerih moramo biti zelo previdni.
Pred dnevi sem opazil, da se začenja skromna spletna trgovina porabiti ogromno virov RAM-a in CPU na namenskem strežniku radodarno. Ta velika poraba virov je privedla do večje "obremenitve" strežnika in dolgega časa nalaganja spletnih strani trgovin.
Ko opazimo neupravičeno veliko obremenitev spletnega strežnika, je dobro, da pred kakršnimi koli ukrepi natančno preučimo vzroke.
V zbirki podatkov sem opazil, da tabela "wp_woocommerce_sessions
"Ogromno je. Imel je več kot 6 GB. Ogromen obseg tabele v zbirki podatkov, ki običajno ni presegla 100 MB.

Kazalo
Kaj je wp_woocommerce_sessions?
Kot lahko ugibamo iz njegovega imena, tabela "wp_woocommerce_sessions
”Vsebuje seje PHP (PHP seje).
Te seje so dejanja uporabnikov spletnega mesta (ali spletnih robotov) in večino časa pridejo do baze podatkov s pomočjo piškotkov. V wp_woocommerce_sessions so shranjeni podatki o izdelkih, ki jih uporabniki vložijo v nakupovalno košarico, kuponi, stroški pošiljanja, podatki o strankah in številne druge informacije, povezane s postopkom naročanja izdelkov.
Te seje se ustvarijo ne glede na to, ali je uporabnik registriran na spletnem mestu ali ne, običajno pa potečejo in se čez nekaj časa samodejno izbrišejo.
Na žalost se te seje ne izbrišejo in v nekaterih primerih ostanejo trajno shranjene v wp_woocommerce_sessions, zaradi česar je tabela precej velika.
Kako izbrisati tabelo wp_woocommerce_sessions
iz SQL?
1. pojdite na Splošno → WooCommerce → Status → Orodja (zavihek).
2. Pomaknite se navzdol do možnosti "Počistite seje strank“. Previdno! Brisanje sej strank pomeni brisanje vseh izdelkov, ki jih dajo v nakupovalni voziček. Če med brisanjem teh sej obstajajo kupci, ki imajo izdelke v košarici, bodo izginili in morebitno spletno naročilo ne bo dokončano.
3. Kliknite "Počisti" in potrdite postopek.

Na tej točki je tabela "wp_woocommerce_sessions" prazna, zato so bile vse seje nakupovanja strank izbrisane.
Problem še zdaleč ni rešen. Tabela SQL wp_woocommerce_sessions bo v njej znova zbrala podatke in privzeto bo znova pridobila razsežnosti, kar ni zaželeno.
Kako ustavimo trajno shranjevanje sej strank v WooCommerce - wp_woocommerce_sessions
?
Zgoraj smo prikazali, kako lahko tabelo "wp_woocommerce_sessions" izpraznimo iz baze podatkov, vendar se bo težava znova pojavila po nekaj dneh, ko se bodo seje strank znova zbrale.
Pred WooCommerce 2.5 so bile seje strank zajete s piškotki in nato shranjene v tabelo. WordPress "wp_options
".
Za večje trgovine je ta metoda pogosto povzročila katastrofe. “Wp_options"Biti vitalna miza WordPress, ki ga uporabljajo splošne možnosti in nastavitve. Prepoznavanje in ročno brisanje odjemalskih sej, shranjenih v wp_options
ni bilo lahko delo.
Zmogljivost WooCommerce ni bila najboljša in razširljivost sčasoma je bila občutljiva točka.
Z uvedbo WooCommerce 2.5 leta 2015 so razvijalci WooCommerce predstavili nov sistem za obdelavo in shranjevanje sej WooCommerce, ki temelji na Upravitelj sej WP. Ta sistem je privedel do nastanka wp_woocommerce_sessions
. Namenska tabela za odjemalske seje, ki v zbirki podatkov ne deluje z drugimi tabelami. V primeru večjih napak naj bodo izgube minimalne.
Kolikor sem videl, imajo spletne trgovine, ki so bile uvedene pred WooCommerce 2.5 in so sčasoma prejemale stalne posodobitve, nekaj težav s samodejnim brisanjem sej odjemalca. Najverjetneje gre za napako, ki se je pojavila v novejši različici WooCommerce 2.5 ali vtičniku WordPress / WooCommerce, ki ni sledil posodobitvam.
V mojem primeru je šlo za konflikt s funkcijo, dodano v datoteko functions.php
teme in katere preprečuje samodejno brisanje po poteku sej iz woocommerce_sessions
.
Če se soočate s takšno težavo, morate natančno raziskati vse možne vzroke. Napaka SQL, dovoljenja SQL, opravilo Cron, konflikti z drugimi vtičniki in nenazadnje preverite spremembe, ki ste jih sčasoma naredili v kodi.
Videli smo, da WooCommerce ponuja vtičnik za samo 29 USD, ki lahko upravlja seje strank. “Počistite košarico in seje za WooCommerce“. Seveda ima modul poleg načrtovanega brisanja sej več orodij, ki bi vam lahko pomagala.
Preprostejša možnost načrtovano brisanjewoocommerce_sessions
”V enodnevnih presledkih, je na voljo z naslednjo kodo v 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();
}
Pustite komentar, če potrebujete pomoč ali imate drugo rešitev.
Nimam načina za brisanje podatkov, ki tehtajo 500mb in imam omejitev 1000mb na minuto za brisanje vse je spet popolnoma zapolnjeno… .neka rešitev?