Woocommerce стал очень используемым модулем все больше и больше Журнал онлайнПолем СеоУправление продуктами, акциями, чистым и интуитивно понятным кодом, простой интерфейсом администрирования и тысячами плугов, разработанных для WOO, являются лишь несколькими аргументами, за которые он заслуживает шанса, когда вы думаете о разработке интернет -магазина.
Как и любой CMS, ни WOO не является не исключением из шансов, которые могут возникнуть в сценариях различных или взаимодействия с другими плагинами WordPress.
На сервере с ресурсами аппаратное обеспечение Довольно щедро, я заметил, что Служба базы данных (mysqld) начинает просить почти 80– 90% памяти оперативной памяти. Довольно серьезная проблема, потому что я просто не понимал, откуда ошибка 110, от периодически (110: Соединение)
При более тщательной проверке процессов SQL я обнаружил, что база данных имеет две довольно значительные таблицы тома: wp_actionscheduler_actions и wp_actionscheduler_logsПолем
В нормальном моде запланированные действия но Woocommerce Action Scheduler Это должно быть удалено автоматически после их выполнения. Это не всегда происходит, и они остаются заблокированными в wp_actionschedier_actions со статусом: неуспешныйВ отмененВ в ожидании или полныйПолем
На изображении над таблицами “wp_actionsscheduler” У них есть только чуть более 15 МБПолем Мне жаль, что я не был вдохновлен сделать снимок экрана, когда они1,2 ГБПолем Несмотря на это, 15 МБ достаточно для таблицы, которая содержит запрограммированные действия Woocommerce.
Эти таблицы “Раздутый” приводит к WP-Cron не удаляет входы заботиться о статусе “неуспешный“В “отменен” и “полный“Полем Обычно эти входы должны быть автоматически удалены из базы данных.
Запланированные действия и их состояние мы можем увидеть это очень легко и в Woocommerce →Статус →Запланированные действияПолем
Как мы чистим заперты “неуспешный“В “отменен” и “полный” ОТwp_actionscheduler_actions и wp_actionscheduler_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-Chron. Таким образом, записи со статусами “зомби” Они больше не могут быть стерты.
Очень важно знать, что если у вас есть интернет -магазин на Wocommerce, и он подключен к магазинам Facebook через плагин “Facebook для Woocommerce“, он автоматически синхронизирует продукты WooCommerce с вашей учетной записью Facebook Shops. И это происходит около 15 минут. Эти входы SQL, если не управляются, вы можете получить несколько сотен тысяч линий “wc_facebook_regenerate_feed” в “wp_actionscheduler_actions“Полем
Этот интервал в порядке для магазинов, которые имеют большое количество заказов, и необходимо постоянно обновлять запасы магазинов Facebook. Если вы все еще рассматриваете эту синхронизацию из Facebook, и ваш магазин можно делать каждые 24 часа, приведенная ниже строка кода может помочь вам.
Откройте файл функций.
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_actionscheduler_actions”Полем
@Stealth
Спасибо за помощь. Вы спасаете мой день и делаете покупки. Я впервые обнаружил это после сбоя моего веб -магазина. Многие плагины начали сбрасывать свои результаты в этой таблице, и он заполняет… Таблица Wooping 9,2 ГБ заставила моего хозяина отказаться от своего прекрасного времени в ГЧП. Теперь я обрезаю прекрасным кодом!
Просто вопрос о падении веревки в этом столе “wpb_action_scheduler_purge” Это по умолчанию в БД или, возможно, я должен. Переименовать это до чего -то в моем (по умолчанию мой DB не 'wp_’ ) или это функция?
Спасибо за помощь и супер хорошую статью
Приветствие
Нетто