Liiga suur wp_woocommerce_sessions andmebaasis [Kuidas parandada]

Nagu ma teistes artiklites ütlesin, WooCommerce see on üha jõulisem ja paindlikum moodul, mida saab teisendada WordPress aastal Ideaalne veebipood alustava ettevõtte jaoks.

Suuruse veebipoe jaoks modeste WooCommerce seda saab käivitada ka "jagatud hostimisel", mis suudab hõlpsasti toetada 5.000 toodet / 100 tellimust päevas, kui kasutatav teema ei tarbi palju ressursse ja te ei kuritarvita teisi mooduleid (pluginaid).

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

Märkasin teisel päeval, et suuruste veebipood modesee algab kulutada tohutult palju RAM-i ressursse ja CPU spetsiaalses serveris 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.

mis on wp_woocommerce_seansid ?

Nagu võime tema nime järgi arvata, 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. In wp_woocommerce_sessioonid on salvestatud andmed kasutajate poolt ostukorvi pandud toodete kohta, kupongid, saatmistasud, kliendiandmed ja palju muud toodete 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 ei juhtu alati seda, et need seansid kustutatakse ja mõnel juhul jäävad need püsivalt kausta wp_woocommerce_sessions, mis muudab selle tabeli üsna suureks mahuks.

Kuidas tabelit kustutada wp_woocommerce_sessions SQL-ist?

1. minna armatuurlaud →  WooCommerce →  olek →  TÖÖRIISTAD (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.

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

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

Kuidas takistada kliendiseansside püsivat salvestamist WooCommerce - wp_woocommerce_sessions?

Olen ülal näidanud, kuidas tabel "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, et need hiljem tabelisse salvestada 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öö.
Jõudlus WooCommerce need ei olnud parimad ja aja jooksul skaleeritavus oli tundlik punkt.

Mis käivitamist WooCommerce 2.5 aastal 2015, arendajad WooCommerce tutvustas uut seansside haldamise ja salvestamise süsteemi WooCommerce, Tuginedes 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 täheldanud, et veebipoed käivitati varem WooCommerce 2.5 ja mida on aja jooksul pidevalt värskendatud, on probleeme seoses kliendiseansside automaatse kustutamisega. Tõenäoliselt on see viga, mis ilmnes uuemas versioonis WooCommerce 2.5 või pistikprogramm WordPress / WooCommerce mis pole uuendustega sammu pidanud.

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.

ma nägin seda WooCommerce pakub vaid 29 dollari eest pistikprogrammi, mis suudab hallata kliendiseansse. "Tühjenda ostukorvi ja seansid WooCommerce“. 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.

Tehnoloogiafännina olen alates 2006. aastast rõõmuga kirjutanud lehel StealthSettings.com. Mul on laialdased kogemused operatsioonisüsteemides: macOS, Windows ja Linux, samuti programmeerimiskeeltes ja blogiplatvormides (WordPress) ning veebipoodide ja platvormidega (WooCommerce, Magento, PrestaShop).

kuidas » Tweaks & Hacks » Liiga suur wp_woocommerce_sessions andmebaasis [Kuidas parandada]

1 mõte teemal "Liiga suur 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