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".
Цей допис востаннє змінено 20 травня 2021 р. 10:07
Коментарі (1)
@Stealth
Tak for hjælpen. Du redder min dag og shop. Jeg opdagede først dette efter et nedbrud af min webshop. Mange plugins er begyndt at dumpe deres output i den tabel og det fylder... Wooping 9.2GB tabel fik min host til at opgive hans ellers fine opp-tid. Nu trimmer jeg med den fine kode!
Lige et spørgsmål på falde rebet denne tabel "wpb_action_scheduler_purge" er det en default i db'en eller skal jeg evt. rename den til noget i min (default hedder min db ikke 'wp_' ) eller er det måske en funktion?
Так для hjælpen og den надзвичайно тонкий артикул
З повагою
Нетзі