Liiga suured wp_woocommerce_sessionid andmebaasis [juhised]

Nagu ma teistes artiklites ütlesin, on WooCommerce üha tugevam ja paindlikum moodul, mis on võimeline muutma WordPress aastal Ideaalne veebipood alustava ettevõtte jaoks.

Tagasihoidliku veebipoe jaoks saab WooCommerce'i käitada "jagatud hostingu" abil ja see võib hõlpsasti toetada 5.000 toodet / 100 tellimust päevas, kui kasutatav teema ei tarbi palju ressursse ega kuritarvita muid mooduleid (pistikprogramme).

Lähtekoodi optimeerimine (WP-teemad), moodulid (WP-pistikprogrammid) ja andmebaasi optimeerimine on ka kaks aspekti, mille suhtes peame olema väga ettevaatlikud.

Märkasin eelmisel päeval, et algab tagasihoidlik veebipood spetsiaalses serveris palju RAM-i ja protsessori ressursse tarbima helde. See suur ressursside tarbimine tõi kaasa serveri suurema "koormuse" ja onine'i poelehtede pika laadimisaja.

Kui märkame veebiserveris põhjendamatult suurt koormust, on enne toimingu tegemist hea põhjuseid hoolikalt uurida.

Andmebaasis märkasin, et tabel "wp_woocommerce_sessions"See on hiigelsuur. Sellel oli üle 6 GB. Tohutu maht andmebaasi tabeli jaoks, mis tavaliselt kokku ei ületanud 100 MB.

wp woocommerce'i seansid
Liiga suured wp_woocommerce_sessions andmebaasis [Kuidas parandada] 3

Mis on wp_woocommerce_session?

Nagu võime tema nime järgi arvata, tabel "wp_woocommerce_sessions"Sisaldab PHP seansse (PHP seansid).
Need seansid on saidi (või veebirobotite) kasutajate toimingud ja enamasti jõuavad nad andmebaasi küpsiste kaudu. Veebisaidil wp_woocommerce_session salvestatakse andmed kasutajate ostukorvi pandud toodete kohta, kupongid, saatmistasud, kliendiandmed ja palju muud toote tellimisprotsessiga seotud teavet.

Need seansid luuakse olenemata sellest, kas kasutaja on saidil registreeritud või mitte, ning tavaliselt peaksid need mõne aja pärast automaatselt aeguma ja kustutama.

Kahjuks pole need seansid alati nii, et need kustutatakse ja mõnel juhul jäävad need püsivalt salvestatuks saidile wp_woocommerce_sessions, mis muudab selle tabeli üsna suureks.

Kuidas tabelit kustutada wp_woocommerce_sessions SQL-ist?

1. minna armatuurlaud →  WooCommerce →  olek →  töövahendid (sakk).

2. Kerige alla valikuni "Selged kliendiseansid“. Ettevaatlik! Kliendiseansside kustutamine tähendab kõigi nende ostukorvi pandud toodete kustutamist. Kui nende seansside kustutamise ajal on kliente, kellel on tooteid ostukorvis, siis need kaovad ja võimalikku veebitellimust ei täideta.

3. Klõpsake nuppu "Kustuta" ja kinnitage toiming.

Woo Seansid 1
Liiga suured wp_woocommerce_sessions andmebaasis [Kuidas parandada] 4

Siinkohal on tabel "wp_woocommerce_sessions" tühi, seega on kõik klientide ostuseansid kustutatud.

Probleem pole kaugeltki lahendatud. SQL-i tabel wp_woocommerce_session kogub sinna uuesti andmeid ja vaikimisi saab see jälle proportsioonid, mis pole soovitav.

Kuidas peatada kliendiseansside püsiv talletamine WooCommerce'is - wp_woocommerce_sessions?

Näitasime eespool, kuidas saab tabelit "wp_woocommerce_session" andmebaasist tühjendada, kuid probleem ilmneb uuesti mõne päeva pärast, mil kliendiseansid taas kogunevad.

Enne WooCommerce 2.5 jäädvustati klientide seansse küpsiste abil ja salvestati seejärel tabelisse. WordPress "wp_options".
Suuremate kaupluste puhul on see meetod sageli katastroofe kaasa toonud. "Wp_options"Olles elutähtis laud WordPress, mida kasutavad üldsuvandid ja seaded. Salvestatud kliendiseansside tuvastamine ja käsitsi kustutamine wp_options see polnud kerge töö.
WooCommerce'i jõudlus ei olnud parim ja aja jooksul skaleeritavus oli tundlik punkt.

WooCommerce 2.5 käivitamisega 2015. aastal on WooCommerce'i arendajad kasutusele võtnud uue WooCommerce'i seansside käitlemise ja salvestamise süsteemi, mis põhineb WP seansside haldur. See süsteem viis tekkimiseni wp_woocommerce_sessions. Spetsiaalne tabel kliendiseansside jaoks, mis andmebaasis ei suhtle teiste tabelitega. Suuremate vigade korral peaksid kaotused olema minimaalsed.

Olen näinud, et veebipoodides, mis käivitati enne WooCommerce 2.5 ja mida on aja jooksul pidevalt värskendatud, on probleeme kliendiseansside automaatse kustutamisega. Tõenäoliselt on see viga, mis ilmnes WooCommerce 2.5 uuemas versioonis või pistikprogrammis WordPress / WooCommerce, mis ei pidanud uuendustega kursis.

Minu puhul oli see vastuolus faili lisatud funktsiooniga functions.php teema ja mis takistab automaatset kustutamist pärast aegunud seansside algust woocommerce_sessions.
Sellise probleemiga silmitsi olles peate hoolikalt uurima kõiki võimalikke põhjuseid. SQL-i viga, SQL-i õigused, Croni töö on vastuolus teiste pistikprogrammidega ja kontrollib kõige lõpuks ka koodis aja jooksul tehtud muudatusi.

Nägin, et WooCommerce pakub selleks võimelist pistikprogrammi vaid 29 dollari eest adminstressikliendi seansid. “Tühjendage WooCommerce'i ostukorv ja seansid“. Muidugi on moodulis lisaks seansside ajastatud kustutamisele ka mitu tööriista, mis võiksid teid aidata.

Lihtsam variant kavandatud kustutaminewoocommerce_sessions”Ühepäevase intervalliga, on saadaval järgmise koodiga 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();
}

Jätke kommentaar, kui vajate abi või kui teil on mõni muu lahendus.

Kirglik tehnoloogia vastu, mulle meeldib testida ja kirjutada õpetusi opsüsteemide kohta macOS, Linux Windows, umbes WordPress, WooCommerce ja seadistada LEMP veebiservereid (Linux, NGINX, MySQL ja PHP). kirjutan edasi StealthSettings.com alates 2006. aastast ja paar aastat hiljem hakkasin kirjutama iHowTo.Tipsi õpetustes ja uudistes ökosüsteemi seadmete kohta Apple: iPhone, iPad, Apple Vaata, HomePod, iMac, MacBook, AirPodid ja tarvikud.

1 mõte teemal "Liiga suured wp_woocommerce_sessions andmebaasis [Kuidas parandada]"

  1. Mul pole võimalust kustutada andmeid, mis kaaluvad 500 mb ja mul on kustutamise limiit 1000 mb minutis, kõik on jälle täielikult täidetud… .mingi lahendus?

    vastus

Jäta kommentaar