NAPRAW OGROMNE tabele SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

WooCommerce stał się szeroko stosowanym modułem sklepy internetowe. SEO, produkt, zarządzanie zapasami, czysty i intuicyjny kod, prosty interfejs administracyjny oraz tysiące wtyczek stworzonych dla Woo, to tylko niektóre z argumentów, dla których warto zaryzykować myśląc o rozwoju sklepu internetowego.

Jak każdy CMS, Woo nie jest wyjątkiem od dziwactw, które mogą wystąpić w różnych scenariuszach użycia lub interakcji z innymi wtyczkami WordPress.
Na serwerze zasobów sprzęt komputerowy dość hojny, zauważyłem to usługa bazy danych (mysqld) zaczyna wymagać prawie 80-90% pamięci RAM. Dość poważny problem, ponieważ po prostu nie rozumiałem, skąd pojawia się błąd 110 okresowo (110: Osiągnięto limit czasu połączenia).
Po bliższej analizie procesów SQL odkryłem, że baza danych ma dwie tabele z dość dużymi objętościami: wp_actionscheduler_actions si wp_actionscheduler_logs.

normalnie zaplanowane działania z Harmonogram działań WooCommerce powinny być automatycznie usuwane po wykonaniu. To nie zawsze się zdarza i utkną w wp_actionsscheduler_actions ze statusem: powiodło, anulowany, w oczekiwaniu lub kompletny.

Na powyższej ilustracji tabele „wp_actionsscheduler"Oni tylko mają nieco ponad 15 MB. Przepraszam, że nie zainspirował mnie do zrobienia zrzutu ekranu, kiedy to zrobili 1.2 GB. Mimo to 15 MB wystarczy na tabelę zawierającą zaplanowane akcje WooCommerce.
Wynikają z tego te „spuchnięte” tabele WP-Cron nie usuwa wpisów którzy mają status "powiodło","anulowany"A"kompletny„. Zwykle wpisy te powinny być automatycznie usuwane z bazy danych.
Zaplanowane działania i ich stan można bardzo łatwo zobaczyć i w WooCommerce →  status →  Zaplanowane działania.

Jak czyścić rynny ”powiodło","anulowany"A"kompletny"W wp_actionscheduler_actions si wp_actionscheduler_logs

Dostęp do bazy danych uzyskujemy przez phpMyAdmin, następnie w SQL wykonujemy kolejno linie poleceń:

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

Po wyczyszczeniu tej tabeli nie oznacza to, że problem został rozwiązany. Jak powiedziałem powyżej, główną przyczyną jest wyłączenie usługi WP-Cron z różnych powodów. W związku z tym wpisy o statusie „zombie” nie mogą już zostać usunięte.
Bardzo ważne jest, aby wiedzieć, że jeśli masz sklep internetowy na WooCommerce i jest on połączony ze sklepami na Facebooku za pośrednictwem wtyczki ”Facebook dla WooCommerce„, Automatycznie synchronizuje produkty WooCommerce z kontem w Sklepach na Facebooku. I robi to w około 15 minut. Jeśli te wpisy SQL nie są kontrolowane, można uzyskać kilkaset tysięcy wierszy ”.wc_facebook_regenerate_feed" w "wp_actionscheduler_actions".

Ten interwał jest odpowiedni dla sklepów, które mają dużą liczbę zamówień, a zapasy produktów w Sklepach Facebooka muszą być stale aktualizowane. Jeśli nadal uważasz, że te synchronizacje między Facebookiem a Twoim sklepem można wykonywać co 24 godziny, pomocna może być poniższa linia kodu.

Otwórz plik functions / php motywu WordPress / WooCommerce, na którym działa Twój sklep i dodaj:

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

Następnie możemy ustawić tygodniowy odstęp między automatycznym czyszczeniem:

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

Po zapisaniu tych zmian nie będziesz mieć problemów z gigantycznymi tabelami dla „wp_actionscheduler_actions”.

NAPRAW OGROMNE tabele SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

O autorze

podstęp

Pasjonat wszystkiego co gadżet i IT, z przyjemnością piszę o skradaniu sięsettings.com od 2006 roku i lubię odkrywać z Wami nowe rzeczy o komputerach i systemach operacyjnych macSystem operacyjny, Linux, Windows, iOS i Android.

Zostaw komentarz