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.

Liksom alla CMS är Woo inget undantag från de konstigheter som kan uppstå i olika scenarier för användning eller interaktion med andra WordPress-plugins.
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 funktionerna / php-filen för WordPress / WooCommerce-temat där din butik körs 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".

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

Om författaren

Stealth

Passionerad om allting och IT, jag skriver med glädje om stealthsettings.com sedan 2006 och jag vill med dig upptäcka nya saker om datorer och operativsystem macOS, Linux, Windows, iOS och Android.

Lämna en kommentar