KORRIGERA ENORMA SQL-tabeller: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

WooCommerce det har blivit en mycket använd modul nättidning. SEO, produkt, lagerhantering, ren och intuitiv kod, enkelt administrationsgränssnitt och tusentals plugins utvecklade för Woo, är bara några av argumenten för vilka det är värt en chans när du tänker på att utveckla en webbutik.

Som alla CMS är Woo inget undantag från de konstigheter som kan uppstå i olika användnings- eller interaktionsscenarier med andra plugins. WordPress.
På en resursserver hårdvara ganska generös, jag märkte det databastjänst (mysqld) börjar kräva nästan 80-90% av RAM-minnet. Ett ganska allvarligt problem, för jag förstod inte var fel 110 kommer regelbundet (110: Tidsgräns för anslutning).
Vid närmare granskning av SQL-processer fann jag att en databas har två tabeller med ganska stora volymer: wp_actionscheduler_actions si wp_actionscheduler_logs.

normalt schemalagda åtgärder av WooCommerce Action Scheduler de bör raderas automatiskt efter att de har körts. Detta händer inte alltid, och de fastnar i wp_actionsscheduler_actions med status: misslyckades, avbokad, väntan eller fullborda.

I bilden ovan visas tabellerna "wp_actionsscheduler"De har bara drygt 15 MB. Jag är ledsen att jag inte blev inspirerad att ta en skärmdump när de gjorde det 1.2 GB. Ändå räcker 15 MB för en tabell som innehåller de schemalagda åtgärderna för WooCommerce.
Dessa "svullna" tabeller är resultatet av det WP-Cron raderar inte poster som har status "misslyckades","avbokad"Och"fullborda“. Normalt bör dessa poster raderas automatiskt från databasen.
De schemalagda åtgärderna och deras tillstånd kan ses mycket enkelt och in WooCommerce →  status →  Schemalagda åtgärder.

Hur man rengör rännorna "misslyckades","avbokad"Och"fullborda"I wp_actionscheduler_actions si wp_actionscheduler_logs

Vi kommer åt databasen via phpMyAdmin, sedan vid SQL kör vi kommandoraderna i tur och ordning:

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

När denna tabell har rengjorts betyder det inte att problemet är löst. Som jag sa ovan är huvudorsaken inaktiveringen av WP-Cron-tjänsten av olika skäl. Således kan poster med "zombie" -status inte längre raderas.
Det är mycket viktigt att veta att om du har en webbutik på WooCommerce, och den är ansluten till Facebook-butiker via plugin "Facebook för WooCommerce", Det synkroniseras automatiskt WooCommerce-produkter med ditt Facebook Shops-konto. Och han gör det på ungefär 15 minuter. Om dessa SQL-poster inte kontrolleras kan du få flera hundra tusen rader. "wc_facebook_regenerate_feed" i "wp_actionscheduler_actions".

Detta intervall är ok för butiker som har ett stort antal beställningar och lager av Facebook Shops-produkter måste uppdateras ständigt. Om du fortfarande tror att dessa synkroniseringar mellan Facebook och din butik kan göras en gång var 24: e timme kan kodraden nedan hjälpa till.

Öppna filen functions.php för temat WordPress / WooCommerce driver din butik och lägg till:

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

Nedan kan vi ställa in ett intervall på en vecka för automatisk rengöring:

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

När du har sparat dessa ändringar har du inga problem med gigantiska tabeller för "wp_actionscheduler_actions".

Det här inlägget ändrades senast den 20 maj 2021 10:07

Stealth: Passionerad om teknik, jag gillar att testa och skriva handledning om operativsystem macOS, Linux, Windows, handla om WordPress, WooCommerce och konfigurera LEMP webbservrar (Linux, NGINX, MySQL och PHP). jag skriver vidare StealthSettings.com sedan 2006, och några år senare började jag skriva på iHowTo.Tips handledning och nyheter om enheter i ekosystemet Apple: iPhone, iPad, Apple Klocka, HomePod, iMac, MacBook, AirPods och tillbehör.

Visa kommentarer (1)

  • @Stealth
    Tak för hjälpen. Du redder min dag och shop. Jag upptäckte först detta efter et nedbrud av min webshop. Många plugins är begyndt att dumpa deras output i den tabell och det fyller ... Wooping 9.2GB tabell fick min värd för att opgive hans ellers fine opp-tid. Nu trimmer jag med den fina koden!
    Fliken wpb_action_scheduler_purge är inte tillgänglig på den här sidan. default i db'en eller skal jeg evt. byt namn på den till något i min (default heter min db inte 'wp_') eller är det kanske en funktion?
    Tak för hjälppen och den superfina artikeln

    Hälsningar
    Nätverk