Як я вже говорив в інших статтях, WooCommerce це все більш надійний і гнучкий модуль, здатний трансформуватися WordPress в Ідеальний інтернет-магазин для стартового бізнесу.
Для інтернет-магазину розмір modeст WooCommerce його також можна запускати на «загальному хостингу», маючи можливість легко підтримувати 5.000 продуктів / 100 замовлень на день, якщо використовувана тема не споживає багато ресурсів і ви не зловживаєте іншими модулями (плагінами).
Оптимізація вихідного коду Теми WP, модулі (плагіни WP) та оптимізація баз даних є також два аспекти, щодо яких нам слід бути дуже обережними.
Днями помітив, що інтернет-магазин розмірів modeпочинається споживати надзвичайно багато ресурсів оперативної пам’яті та CPU на виділеному сервері щедрий. Це велике споживання ресурсів призвело до збільшення "навантаження" на сервер і тривалого часу завантаження сторінок онлайн-магазину.
Коли ми помічаємо невиправдано велике навантаження на веб-сервер, добре ретельно вивчити причини, перш ніж вживати будь-які дії.
У базі даних я помітив, що таблиця "wp_woocommerce_sessions
"Це величезно. Він містив понад 6 ГБ. Величезний обсяг таблиці в базі даних, яка загалом не перевищувала 100 МБ.
Купріни
що таке wp_woocommerce_сесії ?
Як ми можемо здогадатися з його імені, таблиця "wp_woocommerce_sessions
”Містить сесії PHP (Сесії PHP).
Ці сеанси є діями користувачів веб-сайту (або веб-роботів), і в більшості випадків вони потрапляють до бази даних через файли cookie. в wp_woocommerce_sessions зберігають дані про продукти, розміщені користувачами в кошику для покупок, купони, вартість доставки, дані клієнтів і багато іншої інформації, пов’язаної з процесом замовлення продукту.
Ці сеанси створюються незалежно від того, зареєстрований користувач на сайті чи ні, і зазвичай вони закінчуються та автоматично видаляються через деякий час.
На жаль, не завжди буває, що ці сеанси видаляються, а в деяких випадках вони залишаються назавжди збереженими в wp_woocommerce_sessions, завдяки чому ця таблиця досягає досить великого обсягу.
Як видалити таблицю wp_woocommerce_sessions
з SQL?
1. До Інформаційна панель → WooCommerce → Статус → Tools (вкладка).
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, конфлікти з іншими плагінами і, нарешті, перевірка змін, внесених вами в коді з часом.
я побачив, що 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();
}
Залиште коментар, якщо вам потрібна допомога або інше рішення.
У мене немає можливості видалити дані, які важать 500 МБ, і я маю обмеження в 1000 Мб на хвилину, щоб видалити все, знову повністю заповнено… .деяке рішення?