Както казах в други статии, WooCommerce е все по-стабилен и гъвкав модул, способен да превърне WordPress в идеален онлайн магазин за бизнес в началото.
Съдържание
За онлайн магазин със скромен размер WooCommerce може да се изпълнява и на “споделен хостинг”, като можете лесно да поддържате 5000 продукта / 100 поръчки на ден, ако използваната тема не консумира много ресурси и не злоупотребявате с други модули (плъгини).
Оптимизация на изходния код от темата (WP Themes), модули (WP Plugins) и оптимизация на бази данни има и два аспекта, към които трябва да сме много внимателни.
Онзи ден забелязах, че стартира малък онлайн магазин консумират огромни количества RAM и CPU ресурси на специален сървър щедър. Това високо потребление на ресурси имплицитно доведе до a “натоварване” увеличено на сървъра и дълго време за зареждане на страниците на onine store.
Когато забележим необосновано високо натоварване на уеб сървър, е добре да проучим внимателно причините, преди да предприемем каквито и да било мерки.
In baza de date am observat ca tabelul “wp_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 a “woocommerce_sessions” la 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();
}
Оставете коментар, ако имате нужда от помощ или имате друго решение.
Нямам начин да изтрия данните. Тежи 500MB и имам лимит от 1000MB. В момента, в който изтрия всичко, отново се запълва напълно.….някакво решение?