Pārāk lielas wp_woocommerce_sessions datubāzē [Kā novērst]

Kā jau teicu citos rakstos, WooCommerce ir arvien izturīgāks un elastīgāks modulis, kas WordPress var pārvērst par Ideāls tiešsaistes veikals iesācējuzņēmumam.

Pieticīgam tiešsaistes veikalam WooCommerce var darbināt, izmantojot "dalītu mitināšanu", un tas var viegli atbalstīt 5.000 produktus / 100 pasūtījumus dienā, ja izmantotā tēma patērē daudz resursu un nelieto ļaunprātīgi citus moduļus (spraudņus).

Pirmkoda optimizācija WP motīvi, moduļi (WP spraudņi) un datu bāzes optimizācija ir arī divi aspekti, pret kuriem mums jābūt ļoti uzmanīgiem.

Kādu dienu es pamanīju, ka sākas pieticīgs interneta veikals lai patērētu daudz operatīvās atmiņas un centrālā procesora resursu īpašā serverī dāsna. Šis lielais resursu patēriņš izraisīja palielinātu servera "slodzi" un ilgu onine veikala lapu ielādes laiku.

Kad pamanām nepamatoti lielu tīmekļa servera slodzi, ir ieteicams rūpīgi izpētīt cēloņus pirms jebkādu darbību veikšanas.

Datu bāzē es pamanīju, ka tabula "wp_woocommerce_sessions"Tas ir milzīgs. Tam bija vairāk nekā 6 GB. Milzīgs apjoms tabulai datu bāzē, kas kopumā nepārsniedza 100 MB.

Kas ir wp_woocommerce_sessions?

Kā mēs varam nojaust pēc viņa vārda, tabula "wp_woocommerce_sessions”Satur PHP sesijas (PHP sesijas).
Šīs sesijas ir vietnes (vai tīmekļa robotu) lietotāju darbības, un lielākoties viņi nokļūst datu bāzē, izmantojot sīkfailus. Vietnē wp_woocommerce_sessions tiek glabāti dati par produktiem, kurus lietotāji ievietojuši iepirkumu grozā, kuponi, sūtīšanas maksas, klientu dati un daudz kas cits ar produktu pasūtīšanas procesu saistīta informācija.

Šīs sesijas tiek izveidotas neatkarīgi no tā, vai lietotājs ir vai nav reģistrēts vietnē, un parasti tām pēc kāda laika automātiski jābeidzas un tās jāizdzēš.

Diemžēl ne vienmēr šīs sesijas tiek izdzēstas, un dažos gadījumos tās paliek pastāvīgi saglabātas wp_woocommerce_sessions, kas šo tabulu padara diezgan lielu.

Kā izdzēst tabulu wp_woocommerce_sessions no SQL?

1. Iet uz Mans Profils →  WooCommerce →  Status →  darbarīki (cilne).

2. Ritiniet uz leju līdz opcijai "Notīrīt klientu sesijas“. Uzmanīgi! Klientu sesiju dzēšana nozīmē visu produktu, kurus viņi ievieto iepirkumu grozā, dzēšanu. Ja, dzēšot šīs sesijas, ir klienti, kuru grozā ir produkti, tie pazudīs un iespējamais tiešsaistes pasūtījums netiks pabeigts.

3. Noklikšķiniet uz "Notīrīt" un apstipriniet darbību.

Šajā brīdī tabula "wp_woocommerce_sessions" ir tukša, tāpēc visas klientu iepirkšanās sesijas ir izdzēstas.

Problēma nebūt nav atrisināta. SQL tabula wp_woocommerce_sessions SQL atkal apkopos tajā datus un pēc noklusējuma atkal iegūs proporcijas, kas nav vēlams.

Kā pārtraukt klientu sesiju pastāvīgu glabāšanu WooCommerce - wp_woocommerce_sessions?

Iepriekš mēs parādījām, kā tabulu "wp_woocommerce_sessions" var iztukšot no datu bāzes, taču problēma atkal parādīsies pēc dažām dienām, kurās klientu sesijas atkal pulcēsies.

Pirms WooCommerce 2.5 klientu sesijas tika notvertas, izmantojot sīkfailus, kas pēc tam tika saglabāti tabulā WordPress. "wp_options".
Lielākiem veikaliem šī metode bieži ir izraisījusi katastrofas. "Wp_options" ir būtiska WordPress tabula, ko izmanto vispārējās opcijas un iestatījumi. Vietnē saglabāto klienta sesiju identificēšana un manuāla dzēšana wp_options tas nebija viegls darbs.
WooCommerce sniegums nebija vislabākais, un mērogojamība laika gaitā bija sensitīvs punkts.

Ar WooCommerce 2.5 izlaišanu 2015. gadā WooCommerce izstrādātāji ir ieviesuši jaunu WooCommerce sesiju apstrādes un glabāšanas sistēmu, kuras pamatā ir WP sesiju pārvaldnieks. Šī sistēma noveda pie parādīšanās wp_woocommerce_sessions. Īpaša klienta sesiju tabula, kas datu bāzē nesadarbojas ar citām tabulām. Lielu kļūdu gadījumā zaudējumiem jābūt minimāliem.

No tā, ko esmu pamanījis, tiešsaistes veikalos, kas tika atvērti pirms WooCommerce 2.5 un kuri laika gaitā tika pastāvīgi atjaunināti, ir dažas problēmas ar automātisku klientu sesiju dzēšanu. Visticamāk, tā ir kļūda, kas parādījās jaunākā WooCommerce 2.5 versijā vai WordPress / WooCommerce spraudnī, kas neatpalika no atjauninājumiem.

Manā gadījumā tas bija konflikts ar failam pievienoto funkciju functions.php tēmas un kuru novērš automātisku dzēšanu pēc sesiju noildzes no woocommerce_sessions.
Ja jūs saskaras ar šādu problēmu, jums rūpīgi jāizpēta visi iespējamie cēloņi. SQL kļūda, SQL atļaujas, Cron Job, ir pretrunā ar citiem spraudņiem, un visbeidzot, bet ne mazāk svarīgi, pārbaudiet izmaiņas, kuras esat veicis kodā laika gaitā.

Mēs redzējām, ka WooCommerce tikai par 29 USD piedāvā spraudni, kas spēj pārvaldīt klientu sesijas. “Notīrīt WooCommerce grozu un sesijas“. Protams, papildus plānotajai sesiju dzēšanai modulī ir arī vairāki rīki, kas jums varētu palīdzēt.

Vienkāršāka iespēja plānotā dzēšanawoocommerce_sessions”Ar vienas dienas intervālu, ir pieejams ar šādu kodu 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();
}

Atstājiet komentāru, ja jums nepieciešama palīdzība vai jums ir cits risinājums.

Aizraujos ar tehnoloģijām, man patīk testēt un rakstīt pamācības par operētājsistēmām macOS, Linux, Windows, par WordPress, WooCommerce un LEMP tīmekļa servera konfigurāciju (Linux, NGINX, MySQL un PHP). Es rakstu tālāk StealthSettings.com kopš 2006. gada, un dažus gadus vēlāk es sāku rakstīt vietnē iHowTo.Tips apmācības un ziņas par ierīcēm ekosistēmā Apple: iPhone, iPad, Apple Skatīties, HomePod, iMac, MacBook, AirPods un piederumi.

Leave a Comment