Твърде голям wp_woocommerce_sessions в базата данни [Как да коригирам]

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

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

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

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

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

В базата данни забелязах, че таблицата "wp_woocommerce_sessions„Това е огромно. Той имаше над 6 GB. Огромен обем за таблица в база данни, която обикновено не надвишава 100 MB общо.

какво е wp_woocommerce_сесии ?

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

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

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

Как да изтрия таблицата wp_woocommerce_sessions от SQL?

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

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

3. Кликнете върху „Изчистване“ и потвърдете операцията.

В този момент таблицата "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 не беше лесна работа.
Изпълнение WooCommerce те не бяха най-добрите и мащабируемостта във времето беше чувствителна точка.

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

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

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

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

По-опростен вариант планирано изтриване на „woocommerce_sessions”На интервали от един ден, се предлага със следния код в 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();
}

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

Като пасиониран по технологии, пиша с удоволствие в StealthSettings.com от 2006 г. Имам обширен опит с операционни системи: macOS, Windows и Linux, както и с програмни езици и платформи за блогове (WordPress) и онлайн магазини (WooCommerce, Magento, PrestaShop).

How to » Ощипвания и хакове » Твърде голям wp_woocommerce_sessions в базата данни [Как да коригирам]

1 мисъл за „Твърде голям wp_woocommerce_сесии в базата данни [Как да коригирам]"

  1. Нямам начин да изтрия данните тежат 500mb и имам ограничение от 1000mb в минута за изтриване на всичко е напълно запълнено отново... .някакво решение?

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