ВИПРАВЛЕННЯ ВЕЛИЧЕЗНИХ таблиць SQL: wp_actioncheduler_actions & wp_actioncheduler_logs [Поради WooCommerce]

WooCommerce він став широко використовуваним модулем Інтернет-магазини. SEO, продукт, управління запасами, чистий та інтуїтивно зрозумілий код, простий інтерфейс адміністрування та тисячі плагінів, розроблених для Woo, - лише деякі аргументи, заради яких варто шансувати, коли ви думаєте про розробку інтернет-магазину.

Як і будь-яка CMS, Woo не є винятком із дивацтв, які можуть виникнути в різних сценаріях використання або взаємодії з іншими плагінами WordPress.
На сервері ресурсів апаратні засоби досить щедрий, я це помітив служба баз даних (туздИ) починає вимагати майже 80-90% оперативної пам'яті. Досить серйозна проблема, тому що я просто не розумів, звідки періодично виникає помилка 110 (110: Час очікування підключення).
При детальному вивченні процесів SQL я виявив, що база даних має дві таблиці з досить великими обсягами: wp_actioncheduler_actions si wp_actioncheduler_logs.

нормально заплановані дії з Планувальник дій WooCommerce їх слід автоматично видалити після їх виконання. Це трапляється не завжди, і вони застряють у wp_actionsscheduler_action зі статусом: не вдалося, скасовано, в очікуванні або повний.

На зображенні вище таблиці "wp_actionsscheduler"Вони лише мають трохи більше 15 МБ. Мені шкода, що я не надихнувся зробити скріншот, коли вони це зробили 1.2 GB. Тим не менше, 15 Мб достатньо для таблиці, яка містить заплановані дії WooCommerce.
Ці "набряклі" таблиці є результатом цього WP-Cron не видаляє записи які мають статус "не вдалося","скасовано"І"повний“. Зазвичай ці записи слід автоматично видаляти з бази даних.
Заплановані дії та їх стан можна побачити дуже легко та просто WooCommerce →  Статус →  Заплановані дії.

Як почистити жолоби "не вдалося","скасовано"І"повний"в wp_actioncheduler_actions si wp_actioncheduler_logs

Ми отримуємо доступ до бази даних через phpMyAdmin, потім в SQL виконуємо командні рядки по черзі:

DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'canceled'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'complete'
DELETE FROM `wp_actionscheduler_actions` WHERE `status` = 'failed'

Після того, як ця таблиця очищена, це не означає, що проблема вирішена. Як я вже говорив вище, основною причиною є відключення служби WP-Cron з різних причин. Таким чином, записи зі статусом "зомбі" більше не можна видаляти.
Дуже важливо знати, що якщо у вас є інтернет-магазин на WooCommerce, і він підключений до магазинів Facebook через плагін "Facebook для WooCommerce", Він автоматично синхронізує продукти WooCommerce з вашим обліковим записом магазинів Facebook. І робить це приблизно за 15 хвилин. Якщо ці записи SQL не контролюються, ви можете отримати кілька сотень тисяч рядків. "wc_facebook_regenerate_feed"У"wp_actioncheduler_actions».

Цей інтервал є нормальним для магазинів, які мають велику кількість замовлень, і запас товарів Facebook Shops потрібно постійно оновлювати. Якщо ви все ще вважаєте, що ці синхронізації між Facebook та вашим магазином можна зробити раз на 24 години, рядок коду нижче може допомогти.

Відкрийте файл functions / php теми WordPress / WooCommerce, на якій працює ваш магазин, і додайте:

add_filter( 'wc_facebook_feed_generation_interval', function(){ return HOUR_IN_SECONDS * 24; } );

Нижче ми можемо встановити інтервал в тиждень для автоматичного очищення:

add_filter( 'action_scheduler_retention_period', 'wpb_action_scheduler_purge' );
function wpb_action_scheduler_purge() {
 return WEEK_IN_SECONDS;
}

Після збереження цих змін у вас не виникне проблем з гігантськими таблицями для "wp_actioncheduler_action".

ВИПРАВЛЕННЯ ВЕЛИЧЕЗНИХ таблиць SQL: wp_actioncheduler_actions & wp_actioncheduler_logs [Поради WooCommerce]

Про автора

Хитрість

Захоплений усім гаджетом та ІТ, я із задоволенням пишу на стелсsettings.com з 2006 року, і я люблю відкривати з вами нові речі про комп’ютери та операційні системи macОС, Linux, Windows, iOS та Android.

Залишити коментар