Kā jau teicu citos rakstos, WooCommerce ir arvien izturīgāks un elastīgāks modulis, kas spēj pārvērst WordPress par ideāls interneta veikals biznesam sākumāApvidū
apmierināts
Pieticīgam tiešsaistes veikalam WooCommerce var darboties arī a “dalīts hostings”, var viegli atbalstīt 5000 produktus / 100 pasūtījumus dienā, ja izmantotā tēma nepatērē daudz resursu un neizmantojat citus moduļus (spraudņus).
Avota koda optimizācija no tēmas (WP Themes), moduļiem (WP Plugins) un datu bāzes optimizācija ir arī divi aspekti, attiecībā uz kuriem mums jābūt ļoti uzmanīgiem.
Kādu dienu pamanīju, ka sāk darboties neliels interneta veikals patērē milzīgu daudzumu RAM un CPU resursu speciālā serverī dāsna. Šis lielais resursu patēriņš netieši izraisīja a “slodze” palielināts serverī un ilgs vienas veikala lapu ielādes laiks.
Kad mēs novērojam nepamatoti lielu tīmekļa servera slodzi, pirms jebkādu pasākumu veikšanas ir labi rūpīgi izpētīt cēloņus.
Datu bāzē pamanīju, ka tabula “wp_woocommerce_sessions” tas ir ārkārtīgi liels. Tas bija vairāk nekā 6 GB. Milzīgs apjoms tabulai datu bāzē, kas parasti nepārsniedza 100 MB.

Kas ir wp_woocommerce_sessions?
Kā mēs varam nojaust no tās nosaukuma, 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 nonāk datu bāzē, izmantojot sīkfailus. Vietnē wp_woocommerce_sessions tiek glabāti dati par lietotāju iepirkumu grozā ievietotajām precēm, kuponi, piegādes maksa, klientu dati un daudz cita ar preču pasūtīšanas procesu saistīta informācija.
Šīs sesijas tiek izveidotas pat tad, ja lietotājs ir vai nav reģistrēts vietnē, un parasti tām pēc kāda laika jābeidzas un automātiski jādzēš.
Diemžēl ne vienmēr notiek, ka šīs sesijas tiek dzēstas un dažos gadījumos paliek pastāvīgi saglabātas failā wp_woocommerce_sessions, kas liek šai tabulai sasniegt diezgan lielu apjomu.
Kā izdzēst tabulu wp_woocommerce_sessions vai SQL?
1. Mēs ejam uz Paneļa → WooCommerce → Statuss → Instrumenti (cilne).
2. Ritiniet uz leju līdz opcijai “Notīrīt klientu sesijas“. Uzmanīgi! Klientu sesiju dzēšana nozīmē visu viņu iepirkumu grozā ievietoto produktu dzēšanu. Ja šo sesiju dzēšanas laikā būs klienti, kuru grozā ir preces, tie pazudīs un iespējamais tiešsaistes pasūtījums netiks pabeigts.
3. Noklikšķiniet “Noskaidrot” un apstipriniet darbību.

Šajā brīdī galds “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 apkopos datus un pēc noklusējuma atkal iegūs proporcijas, kas nav vēlams.
Kā neļaut klientu sesijām pastāvīgi saglabāt WooCommerce – wp_woocommerce_sessions?
Iepriekš parādīju, kā var iztukšot galdu “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, un pēc tam saglabātas WordPress tabulā. “wp_options“Apvidū
Lielākiem veikaliem šī metode bieži noveda pie katastrofām. “wp_options” tā ir svarīga WordPress tabula, ko izmanto opcijas un vispārīgie iestatījumi. Vietnē saglabāto klientu sesiju identificēšana un manuāla dzēšana wp_options tas nebija gluži viegls darbs.
WooCommerce veiktspēja nebija vislabākā, un mērogojamība laika gaitā bija jutīgs punkts.
Līdz ar WooCommerce 2.5 izlaišanu 2015. gadā, WooCommerce izstrādātāji ieviesa jaunu sistēmu WooCommerce sesiju apstrādei un glabāšanai, kuras pamatā ir WP sesiju vadītājs. Šī sistēma noveda pie rašanās wp_woocommerce_sessions. Īpaša tabula klientu sesijām, kurām datu bāzē nevajadzētu mijiedarboties 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 veikaliem, kas tika atvērti pirms WooCommerce 2.5 un kuri laika gaitā tika pastāvīgi atjaunināti, ir dažas problēmas saistībā ar klientu sesiju automātisku dzēšanu. Visticamāk, tā ir kļūda, kas parādījās jaunākā WooCommerce 2.5 versijā vai WordPress/WooCommerce spraudnī, kas nav sekojis līdzi atjauninājumiem.
Manā gadījumā tas bija pretrunā ar failam pievienoto funkciju functions.php no tēmas, un kuras novērš automātisku dzēšanu pēc tam, kad ir beidzies sesijas no woocommerce_sessionsApvidū
Ja jūs saskaraties 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, konflikti ar citiem spraudņiem un visbeidzot, bet ne mazāk svarīgi, pārbaudiet izmaiņas, ko laika gaitā esat veicis kodā.
Es redzēju, ka WooCommerce piedāvā tikai par 29 USD spraudni, kas spēj pārvaldīt klientu sesijas. “Notīriet WooCommerce grozu un sesijas“. Protams, papildus plānotajai sesiju dzēšanai modulim ir vairāki rīki, kas varētu jums palīdzēt.
Vienkāršāks variants plānotā dzēšana a “woocommerce_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 cits risinājums.
Man nav iespējas izdzēst datus. Tas sver 500 MB, un man ir 1000 MB ierobežojums. Brīdī, kad visu izdzēšu, tas atkal piepildās pilnībā.….kāds risinājums?