Liiga suured wp_woocommerce_sessions andmebaasis [kuidas parandada]

Nagu ma teistes artiklites ütlesin, on WooCommerce üha tugevam ja paindlikum moodul, mis suudab muuta WordPressi ideaalne veebipood ettevõtte alguses.

Tagasihoidliku suurusega veebipoe jaoks saab WooCommerce'i käivitada ka a “jagatud hostimine”, mis suudab hõlpsasti toetada 5000 toodet / 100 tellimust päevas, kui kasutatav teema ei tarbi palju ressursse ja te ei kuritarvita teisi mooduleid (pluginaid).

Lähtekoodi optimeerimine teemast (WP Themes), moodulitest (WP Plugins) ja andmebaasi optimeerimine on ka kaks aspekti, mille suhtes peame olema väga ettevaatlikud.

Märkasin üleeile, et alustab väikest veebipoodi kulutavad spetsiaalses serveris tohutul hulgal RAM-i ja CPU ressursse helde. Selline suur ressursside tarbimine tõi kaudselt kaasa a “koormus” serveris suurenenud ja ühe poe lehtede pikk laadimisaeg.

Kui märkame veebiserveri ebamõistlikult suurt koormust, on hea põhjus enne meetmete võtmist hoolikalt uurida.

Andmebaasis märkasin, et tabel “wp_woocommerce_sessions” see on tohutult suur. See oli üle 6 GB. Tohutu maht tabeli jaoks andmebaasis, mis tavaliselt ei ületanud kokku 100 MB.

Mis on wp_woocommerce_sessions?

Nagu me selle nime järgi mõistame, on tabel “wp_woocommerce_sessions” sisaldab PHP seansse (PHP seansid).
Need seansid on saidi kasutajate (või veebirobotite) tegevused ja enamasti satuvad nad andmebaasi küpsiste kaudu. Wp_woocommerce_sessionsis salvestatakse andmed kasutajate poolt ostukorvi pandud toodete kohta, kupongid, saatmistasud, kliendiandmed ja palju muud toodete tellimisprotsessiga seotud teavet.

Need seansid luuakse isegi siis, kui kasutaja on saidil registreeritud või mitte, ning tavaliselt peavad need aeguma ja mõne aja pärast automaatselt kustutama.

Kahjuks ei juhtu alati seda, et need seansid kustutatakse ja mõnel juhul jäävad need püsivalt kausta wp_woocommerce_sessions, mistõttu see tabel jõuab üsna suure mahuni.

Kuidas me tabelit kustutame? wp_woocommerce_sessions din SQL?

1. Me läheme ArmatuurlaudWooCommerceOlekTööriistad (vahekaart).

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

3. Klõpsake “Selge” ja kinnitage toiming.

Sel hetkel laud “wp_woocommerce_sessions” on tühi, seega on kõik klientide ostuseansid kustutatud.

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

Kuidas takistada kliendiseansside püsivat salvestamist WooCommerce'is – wp_woocommerce_sessions?

Eespool näitasin, kuidas lauda saab tühjendada “wp_woocommerce_sessions” andmebaasist, kuid probleem ilmneb uuesti mõne päeva pärast, kui kliendiseansid taas kogunevad.

Enne WooCommerce 2.5 jäädvustati kliendiseansid küpsiste kaudu ja salvestati seejärel WordPressi tabelisse “wp_options“.
Suuremate kaupluste puhul viis see meetod sageli katastroofideni. “wp_options” olles WordPressi oluline tabel, mida kasutavad valikud ja üldsätted. Salvestatud kliendiseansside tuvastamine ja käsitsi kustutamine wp_options see ei olnud just kerge töö.
WooCommerce'i jõudlus ei olnud parim ja aja jooksul skaleeritavus oli tundlik punkt.

WooCommerce 2.5 väljalaskmisega 2015. aastal võtsid WooCommerce'i arendajad kasutusele uue süsteemi WooCommerce'i seansside haldamiseks ja salvestamiseks, mis põhineb WP seansside haldur. See süsteem viis selle tekkimiseni wp_woocommerce_sessions. Spetsiaalne tabel kliendiseansside jaoks, mis andmebaasis ei tohiks suhelda teiste tabelitega. Suuremate vigade korral peaksid kaod olema minimaalsed.

Olen täheldanud, et enne WooCommerce 2.5 käivitatud veebipoodidel, mis said aja jooksul pidevalt värskendusi, on probleeme seoses kliendiseansside automaatse kustutamisega. Tõenäoliselt on tegu veaga, mis ilmnes WooCommerce 2.5 uuemas versioonis või WordPressi / WooCommerce'i pistikprogrammis, mis pole värskendustega kursis.

Minu puhul oli see vastuolu failile lisatud funktsiooniga functions.php teema ja milline takistab automaatset kustutamist pärast aegunud seansside aja möödumist woocommerce_sessions.
Kui olete sellise probleemiga silmitsi seisnud, peate hoolikalt uurima kõiki võimalikke põhjuseid. SQL-tõrge, SQL-õigused, Cron Job, konfliktid teiste pistikprogrammidega ja lõpuks kontrollige aja jooksul koodis tehtud muudatusi.

Nägin, et WooCommerce pakub vaid 29 dollari eest pistikprogrammi, mis suudab hallata kliendiseansse. “Tühjendage WooCommerce'i ostukorv ja seansid“. Muidugi on moodulil lisaks seansside plaanitud kustutamisele ka mitmeid tööriistu, mis võivad teid aidata.

Lihtsam variant kavandatud kustutamine a “woocommerce_sessions” ühepäevaste intervallidega, on saadaval järgmise koodiga keeles 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();
}

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

Kirglik tehnoloogia vastu kirjutan koos Stealthsetts.com -i naudinguga alates 2006. aastast. Mul on rikkalik kogemus opsüsteemides: MacOS, Windows ja Linux, aga ka programmeerimiskeelte ja ajaveebiplatvormide (WordPress) ning veebipoodide jaoks (WooCommerce, Magento, Prashop).

Home Teie IT -õpetuste allikas, kasulikud näpunäited ja uudised. Liiga suured wp_woocommerce_sessions andmebaasis [kuidas parandada]

1 mõtles edasi ”Liiga suured wp_woocommerce_sessions andmebaasis [kuidas parandada]”

  1. Mul pole võimalust andmeid kustutada. See kaalub 500 MB ja mul on limiit 1000 MB. Kui ma kõik kustutan, täitub see uuesti täielikult.…. mingi lahendus?

    Vastama
Jäta kommentaar