Як я вже говорив в інших статтях, WooCommerce стає все більш надійним і гнучким модулем, здатним перетворити WordPress на ідеальний інтернет-магазин для бізнесу на початку.
зміст
Для невеликого інтернет-магазину WooCommerce також можна запускати на “спільний хостинг”, маючи можливість легко підтримувати 5000 продуктів / 100 замовлень на день, якщо використовувана тема не споживає багато ресурсів і ви не зловживаєте іншими модулями (плагінами).
Оптимізація вихідного коду з теми (WP Themes), модулів (WP Plugins) і оптимізація бази даних є також два аспекти, до яких ми повинні бути дуже обережними.
Днями помітив, що відкривається маленький інтернет-магазин споживають величезну кількість оперативної пам’яті та ресурсів ЦП на виділеному сервері щедрий. Це високе споживання ресурсів призвело до a “навантаження” збільшення на сервері та тривалий час завантаження сторінок onine store.
Коли ми помічаємо невиправдано високе навантаження на веб-сервер, варто ретельно дослідити причини, перш ніж вживати будь-яких заходів.
У базі даних я помітив, що табл “wp_woocommerce_sessions” він надзвичайно великий. Це було понад 6 ГБ. Величезний обсяг для таблиці в базі даних, яка зазвичай не перевищує 100 Мб.

Що таке wp_woocommerce_sessions?
Як ми можемо зрозуміти з його назви, стіл “wp_woocommerce_sessions” містить сесії PHP (Сеанси PHP.).
Ці сеанси є діями користувачів сайту (або веб-роботів), і здебільшого вони потрапляють у базу даних через файли cookie. У wp_woocommerce_sessions зберігаються дані про продукти, які користувачі розміщують у кошику для покупок, купони, вартість доставки, дані клієнтів і багато іншої інформації, пов’язаної з процесом замовлення продукту.
Ці сеанси створюються, навіть якщо користувач зареєстрований на сайті чи ні, і, як правило, вони закінчуються та автоматично видаляються через деякий час.
На жаль, не завжди буває так, що ці сеанси видаляються, а в деяких випадках вони постійно зберігаються в wp_woocommerce_sessions, через що ця таблиця досягає досить великого обсягу.
Як ми видаляємо таблицю? wp_woocommerce_sessions din SQL?
1. Ми йдемо до Прилад → ВООКУМЕРСЬКА → Статус → Інструменти (вкладка).
2. Прокрутіть вниз до опції “Очистити сесії клієнтів“. Обережно! Видалення сеансів клієнта означає видалення всіх продуктів, розміщених ним у кошику. Якщо під час видалення цих сеансів є клієнти, які мають продукти в кошику, вони зникнуть, і можливе онлайн-замовлення не буде виконано.
3. Клацніть “ясно” і підтвердити операцію.

У цей момент табл “wp_woocommerce_sessions” порожній, тому всі сеанси покупок клієнта видалено.
Проблема ще далека від вирішення. SQL-таблиця wp_woocommerce_sessions знову буде збирати дані в неї і за замовчуванням вона знову отримає пропорції, що небажано.
Як зупинити постійне зберігання сеансів клієнтів у WooCommerce – wp_woocommerce_sessions?
Вище я показав, як таблицю можна спорожнити “wp_woocommerce_sessions” з бази даних, але проблема з’явиться знову через кілька днів, коли клієнтські сеанси знову зберуться.
До WooCommerce 2.5 сеанси клієнтів фіксувалися за допомогою файлів cookie, а потім зберігалися в таблиці 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“. Звичайно, окрім запланованого видалення сеансів, модуль має кілька інструментів, які можуть вам допомогти.
Більш простий варіант заплановане видалення a “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();
}
Залиште коментар, якщо вам потрібна допомога або є інше рішення.
У мене немає можливості видалити дані. Він важить 500 МБ, і я маю обмеження 1000 МБ. Щойно я видаляю все, воно знову повністю заповнюється.….якесь рішення?