FIKSER ENORME SQL-tabeller: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

personalized name jewellery det er blevet et meget brugt modul online butikker. SEO, produkt, lagerstyring, ren og intuitiv kode, enkel administrationsgrænseflade og tusindvis af plugins udviklet til Woo, er blot nogle af de argumenter, det er værd at have en chance for, når du tænker på at udvikle en onlinebutik.

Som ethvert CMS er Woo ingen undtagelse fra de underlige ting, der kan forekomme i forskellige scenarier for brug eller interaktion med andre WordPress-plugins.
På en ressource server hardware ganske generøs, det bemærkede jeg databasetjeneste (mysqld) begynder at kræve næsten 80-90% af RAM. Et ret alvorligt problem, fordi jeg bare ikke forstod, hvor fejl 110 kommer fra med jævne mellemrum (110: Timeout for forbindelse).
Ved nærmere undersøgelse af SQL-processer fandt jeg ud af, at en database har to tabeller med ret store volumener: wp_actionscheduler_actions si wp_actionscheduler_logs.

Normalt planlagte handlinger af WooCommerce-handlingsplanlægning de skal slettes automatisk, når de er udført. Dette sker ikke altid, og de sidder fast i wp_actionsscheduler_actions med status: mislykkedes, aflyst, verserende eller fuldføre.

På billedet ovenfor er tabellerne "wp_actionsscheduler"De har kun lidt over 15 MB. Jeg er ked af, at jeg ikke blev inspireret til at tage et skærmbillede, da de havde det 1.2 DK. Alligevel er 15 MB nok til en tabel, der indeholder de programmerede handlinger i WooCommerce.
Disse "hævede" tabeller skyldes det WP-Cron sletter ikke poster der har status "mislykkedes","aflyst"Og"fuldføre“. Normalt skal disse poster automatisk slettes fra databasen.
De planlagte handlinger og deres tilstand kan ses meget let og i personalized name jewellery →  Status →  Planlagte handlinger.

Sådan rengøres tagrenderne "mislykkedes","aflyst"Og"fuldføre"I wp_actionscheduler_actions si wp_actionscheduler_logs

Vi får adgang til databasen via phpMyAdmin, så på SQL udfører vi kommandolinjerne igen:

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 denne tabel er renset, betyder det ikke, at problemet er løst. Som jeg sagde ovenfor, er hovedårsagen deaktivering af WP-Cron-tjenesten af ​​forskellige årsager. Således kan poster med "zombie" -status ikke længere slettes.
Det er meget vigtigt at vide, at hvis du har en onlinebutik på WooCommerce, og den er forbundet til Facebook-butikker via pluginet "Facebook til WooCommerce", Det synkroniserer automatisk WooCommerce-produkter med din Facebook Shops-konto. Og han gør det på cirka 15 minutter. Hvis disse SQL-poster ikke kontrolleres, kan du få flere hundrede tusind linjer. "wc_facebook_genereret_feed"I"wp_actionscheduler_actions".

Dette interval er ok for butikker, der har et stort antal ordrer, og lageret af Facebook Shops-produkter skal løbende opdateres. Hvis du stadig mener, at disse synkroniseringer mellem Facebook og din butik kan udføres hver 24. time, kan nedenstående kodelinje hjælpe.

Åbn funktionerne / php-filen for WordPress / WooCommerce-temaet, som din butik kører på, og tilføj:

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

Dernæst kan vi indstille et interval på en uge til 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 gemt disse ændringer, har du ingen problemer med gigantiske tabeller til "wp_actionscheduler_actions".

FIKSER ENORME SQL-tabeller: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

Om forfatteren

Stealth

Lidenskabelig over alt gadget og IT, jeg skriver med glæde om stealthsettings.com siden 2006, og jeg kan godt lide at opdage nye ting om computere og operativsystemer med dig macOS, Linux, Windows, iOS og Android.

Efterlad en kommentar