ИЗПРАВЕТЕ ОГРОМНИ SQL таблици: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

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

Както всяка CMS, Woo не прави изключение от странностите, които могат да възникнат при различни сценарии на използване или взаимодействие с други плъгини на WordPress.
На ресурсен сървър железария доста щедър, забелязах това услуга за бази данни (Mysqld) започва да изисква почти 80-90% RAM. Доста сериозен проблем, защото просто не разбрах откъде периодично идва грешка 110 (110: Времето за свързване изтече).
При по-внимателна проверка на SQL процесите открих, че базата данни има две таблици с доста значителни обеми: wp_actioncheduler_actions si wp_actioncheduler_logs.

нормално планирани действия но Планиращ действие на WooCommerce те трябва да бъдат изтрити автоматично, след като бъдат изпълнени. Това не винаги се случва и те се забиват в wp_actionsscheduler_action със статус: Неуспешно, отменен, в очакване на или завърши.

На изображението по-горе таблиците "wp_actionsscheduler„Те имат само малко над 15 MB. Съжалявам, че не бях вдъхновен да направя екранна снимка, когато те бяха 1.2 GB. Въпреки това 15 MB са достатъчни за таблица, която съдържа програмираните действия на 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 Shops чрез приставката "Facebook за WooCommerce", Той автоматично синхронизира продуктите на WooCommerce с вашия акаунт във Facebook Shops. И го прави за около 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_actions".

ИЗПРАВЕТЕ ОГРОМНИ SQL таблици: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

За автора

Хитрост

Страстен към всичко приспособление и IT, аз пиша с удоволствие в стелтsettings.com от 2006 г. и обичам да откривам с вас нови неща за компютрите и операционните системи macОС, Linux, Windows, iOS и Android.

Оставете коментар