Pārāk liels wp_woocommerce_sessions datu bāzē [Kā labot]

Kā jau teicu citos rakstos, WooCommerce tas ir arvien izturīgāks un elastīgāks modulis, kas spēj pārveidoties WordPress in Ideāls tiešsaistes veikals iesācējuzņēmumam.

Izmēra interneta veikalam modeste WooCommerce to var palaist arī "dalītā hostingā", spējot viegli atbalstīt 5.000 produktu / 100 pasūtījumu dienā, ja izmantotā tēma nepatērē daudz resursu un neizmantojat 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 pamanīju, ka interneta veikals izmēru modetas sākas patērēt ārkārtīgi daudz RAM resursu un CPU speciālā 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_sesijas?

Kā mēs varam nojaust pēc viņa vārda, tabula "wp_woocommerce_sessions”Satur PHP sesijas (PHP sesijas).
Šīs sesijas ir vietnes lietotāju (vai tīmekļa robotu) darbības, un lielāko daļu laika tās sasniedz datu bāzi, izmantojot sīkfailus. In wp_woocommerce_sesijas tiek glabāti dati par precēm, ko lietotāji ievietojuši iepirkumu grozā, kuponi, piegādes maksa, klientu dati un daudz citas informācijas, kas saistīta ar preču pasūtīšanas procesu.

Šī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 notiek, ka šīs sesijas tiek dzēstas un dažos gadījumos paliek neatgriezeniski saglabātas wp_woocommerce_sessions, kas ļauj šai tabulai sasniegt diezgan lielu apjomu.

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.

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

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

Kā novērst klientu sesiju pastāvīgu glabāšanu WooCommerce - wp_woocommerce_sessions?

Iepriekš esmu parādījis, kā tabula "wp_woocommerce_sessions" no datu bāzes, taču problēma atkal parādīsies pēc dažām dienām, kad klientu sesijas atkal tiks apkopotas.

Pirms WooCommerce 2.5, klientu sesijas tika tvertas, izmantojot sīkfailus, lai vēlāk tās saglabātu tabulā WordPress "wp_options".
Lielākiem veikaliem šī metode bieži vien ir novedusi pie katastrofām. “Wp_options“Esot par svarīgu galdu WordPress, ko izmanto vispārīgās opcijas un iestatījumi. Klientu sesiju identificēšana un manuāla dzēšana wp_options tas nebija viegls darbs.
Sniegums WooCommerce tie nebija tie labākie, un mērogojamība laika gaitā bija jutīgs punkts.

Ar uzsākt WooCommerce 2.5 2015. gadā, izstrādātāji WooCommerce ieviesa jaunu sesiju apstrādes un uzglabāšanas sistēmu WooCommerce, Pamatojoties uz 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 novērojis, tiešsaistes veikali sāka darboties iepriekš WooCommerce 2.5 un kas laika gaitā ir saņēmuši pastāvīgus atjauninājumus, ir dažas problēmas saistībā ar klientu sesiju automātisko dzēšanu. Visticamāk, tā ir kļūda, kas parādījās jaunākā versijā WooCommerce 2.5 vai spraudnis WordPress / WooCommerce kas nav sekojis līdzi 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ā.

Es redzēju, ka WooCommerce piedāvā tikai par 29 USD spraudni, kas spēj pārvaldīt klientu sesijas. "Notīrīt grozu un sesijas WooCommerce“. 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.

Tehnoloģijas entuziasts, ar prieku rakstu vietnē StealthSettings.com no 2006. gada. Man ir plaša pieredze operētājsistēmās: macOS, Windows un Linux, kā arī programmēšanas valodās un blogošanas platformās (WordPress) un tiešsaistes veikalu platformās (WooCommerce, Magento, PrestaShop).

kā uz » Tweaks & Hacks » Pārāk liels wp_woocommerce_sessions datu bāzē [Kā labot]

1 doma par tēmu “Pārāk liels wp_woocommerce_sessions datu bāzē [Kā labot]"

  1. Man nav iespējas izdzēst datus, kas sver 500 MB, un man ir 1000 mb minūtē ierobežojums, lai dzēstu, viss atkal ir pilnībā aizpildīts… .kāds risinājums?

    atbildēt
Leave a Comment