Твърде големи WP_WOOCOMMERCE_SESSIONS в база данни [как да поправя]

Както казах в други статии, WooCommerce е все по-стабилен и гъвкав модул, способен да превърне WordPress в идеален онлайн магазин за бизнес в началото.

За онлайн магазин със скромен размер WooCommerce може да се изпълнява и на “споделен хостинг”, като можете лесно да поддържате 5000 продукта / 100 поръчки на ден, ако използваната тема не консумира много ресурси и не злоупотребявате с други модули (плъгини).

Оптимизация на изходния код от темата (WP Themes), модули (WP Plugins) и оптимизация на бази данни има и два аспекта, към които трябва да сме много внимателни.

Онзи ден забелязах, че стартира малък онлайн магазин консумират огромни количества RAM и CPU ресурси на специален сървър щедър. Това високо потребление на ресурси имплицитно доведе до a “натоварване” увеличено на сървъра и дълго време за зареждане на страниците на onine store.

Когато забележим необосновано високо натоварване на уеб сървър, е добре да проучим внимателно причините, преди да предприемем каквито и да било мерки.

In baza de date am observat ca tabelulwp_woocommerce_sessions” той е изключително голям. Беше над 6GB. Огромен обем за таблица в база данни, която обикновено не надвишава общо 100 MB.

Какво е wp_woocommerce_sessions?

Както можем да разберем от името му, масата “wp_woocommerce_sessions” съдържа PHP сесии (PHP сесии).
Тези сесии са действия на потребители на сайта (или уеб роботи) и през повечето време те попадат в базата данни чрез бисквитки. В wp_woocommerce_sessions се съхраняват данни за продуктите, поставени от потребителите в пазарската количка, купони, такси за доставка, клиентски данни и много друга информация, свързана с процеса на поръчване на продукти.

Тези сесии се създават дори ако потребителят е регистриран на сайта или не и обикновено трябва да изтекат и да се изтрият автоматично след известно време.

За съжаление, не винаги се случва тези сесии да бъдат изтрити и в някои случаи те остават постоянно съхранени в wp_woocommerce_sessions, поради което тази таблица достига доста голям обем.

Как да изтрием таблицата? wp_woocommerce_sessions din SQL?

1. Отиваме на Табло за управлениеWooCommerceСтатусИнструменти (раздел).

2. Превъртете надолу до опцията “Clear customer sessions“. Внимавайте! Изтриването на клиентски сесии означава изтриване на всички продукти, поставени от тях в пазарската количка. Ако докато изтривате тези сесии има клиенти, които имат продукти в кошницата, те ще изчезнат и евентуалната онлайн поръчка няма да бъде изпълнена.

3. Щракнете “Ясно” и потвърдете операцията.

In acest moment tabelul “wp_woocommerce_sessions” е празен, така че всички клиентски сесии за пазаруване са изтрити.

Проблемът далеч не е решен. SQL таблицата wp_woocommerce_sessions отново ще събира данни в нея и по подразбиране отново ще получава пропорции, което не е желателно.

Как да спрем сесиите на клиентите да се съхраняват постоянно в WooCommerce – wp_woocommerce_sessions?

По-горе показах как може да се изпразни масата “wp_woocommerce_sessions” от базата данни, но проблемът ще се появи отново след няколко дни, когато клиентските сесии се съберат отново.

Преди WooCommerce 2.5 клиентските сесии бяха заснети чрез бисквитки и след това записани в таблицата на WordPress “wp_options“.
За по-големите магазини този метод често водеше до бедствия. “wp_options” като жизненоважната таблица на WordPress, използвана от опции и общи настройки. Идентифициране и ръчно изтриване на клиентски сесии, съхранени в wp_options nu era o munca tocmai usoara.
Производителността на WooCommerce не беше най-добрата, а мащабируемостта във времето беше чувствителна точка.

С пускането на WooCommerce 2.5 през 2015 г. разработчиците на WooCommerce въведоха нова система за обработка и съхранение на WooCommerce сесии, базирана на Мениджър на WP сесии. Тази система доведе до появата wp_woocommerce_sessions. Специална таблица за клиентски сесии, която в базата данни не трябва да взаимодейства с други таблици. При големи грешки загубите трябва да са минимални.

От това, което наблюдавах, онлайн магазини, стартирани преди WooCommerce 2.5 и които са получавали постоянни актуализации с течение на времето, имат някои проблеми по отношение на автоматичното изтриване на клиентски сесии. Най-вероятно това е грешка, появила се в по-нова версия на WooCommerce 2.5 или приставка за WordPress / WooCommerce, която не е в крак с актуализациите.

В моя случай това беше конфликт с функция, добавена към файла functions.php al temei, si care предотвратява автоматичното изтриване след време на изтекли сесии от woocommerce_sessions.
Ако се сблъскате с такъв проблем, трябва внимателно да проучите всички възможни причини. SQL грешка, SQL разрешения, Cron Job, конфликти с други добавки и не на последно място, проверете промените, които сте направили в кода с течение на времето.

Видях, че WooCommerce предлага само за $29 плъгин, способен да управлява клиентски сесии. “Изчистване на количката и сесиите за WooCommerce“. Разбира се, освен планираното изтриване на сесии, модулът има няколко инструмента, които могат да ви помогнат.

O optiune mai simpla de stergere programata awoocommerce_sessionsla intervale de o zi, се предлага със следния код в 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();
}

Оставете коментар, ако имате нужда от помощ или имате друго решение.

Страстен за технологиите, пиша с удоволствие от stealthsetts.com, започвайки от 2006 г. Имам богат опит в операционните системи: macOS, Windows и Linux, но също така и в езици за програмиране и блогове (WordPress) и за онлайн магазини (WooCommerce, Magento, Presashop).

Home Вашият източник на ИТ уроци, полезни съвети и новини. Твърде големи WP_WOOCOMMERCE_SESSIONS в база данни [как да поправя]

1 Мисъл за “Твърде големи WP_WOOCOMMERCE_SESSIONS в база данни [как да поправя]”

  1. Нямам начин да изтрия данните. Тежи 500MB и имам лимит от 1000MB. В момента, в който изтрия всичко, отново се запълва напълно.….някакво решение?

    Отговор
Оставете коментар