FIX ENORME SQL-tabellen: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tips]

WooCommerce het is een veelgebruikte module geworden online winkels. SEO, product- en voorraadbeheer, schone en intuïtieve code, eenvoudige administratie-interface en de duizenden plug-ins die voor Woo zijn ontwikkeld, zijn slechts enkele van de redenen waarom het een kans verdient als je denkt aan het ontwikkelen van een online winkel.

Zoals elk CMS is Woo geen uitzondering op de eigenaardigheden die kunnen optreden in verschillende gebruiks- of interactiescenario's met andere plug-ins. WordPress.
Op een bronserver hardware best gul, dat merkte ik databaseservice (mysqld) begint bijna 80-90% RAM te vereisen. Een behoorlijk serieus probleem, omdat ik gewoon niet begreep waar fout 110 periodiek vandaan komt (110: Time-out verbinding).
Bij nadere inspectie van SQL-processen ontdekte ik dat een database twee tabellen heeft met vrij grote volumes: wp_actionscheduler_actions si wp_actionscheduler_logs.

normaal geplande acties van WooCommerce Actieplanner ze moeten automatisch worden verwijderd nadat ze zijn uitgevoerd. Dit gebeurt niet altijd, en ze komen vast te zitten in wp_actionsscheduler_actions met de status: mislukt, geannuleerd, in afwachting van of compleet.

In de bovenstaande afbeelding zijn de tabellen "wp_actionscheduler"Ze hebben alleen iets meer dan 15 MB. Het spijt me dat ik niet geïnspireerd was om een ​​screenshot te maken toen ze dat wel hadden 1.2 GB. Toch is 15 MB best veel voor een tabel met de geprogrammeerde acties van WooCommerce.
Deze "gezwollen" tafels zijn daaruit het resultaat WP-Cron verwijdert geen vermeldingen die status hebben "mislukt","geannuleerd"En"compleet“. Normaal gesproken moeten deze vermeldingen automatisch uit de database worden verwijderd.
De geplande acties en hun status zijn heel gemakkelijk en in te zien WooCommerce →  Status →  Geplande acties.

Hoe de dakgoten te reinigen "mislukt","geannuleerd"En"compleet"In wp_actionscheduler_actions si wp_actionscheduler_logs

We hebben toegang tot de database via phpMyAdmin, waarna we in SQL de opdrachtregels achtereenvolgens uitvoeren:

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

Als deze tafel eenmaal is schoongemaakt, betekent dit niet dat het probleem is opgelost. Zoals ik hierboven al zei, is de belangrijkste oorzaak het uitschakelen van de WP-Cron-service om verschillende redenen. Zo kunnen items met de status "zombie" niet meer worden verwijderd.
Het is erg belangrijk om te weten dat als u een online winkel heeft WooCommerce, en het is verbonden met Facebook Shops via de plug-in "Facebook voor WooCommerce", synchroniseert het automatisch de producten van WooCommerce met je Facebook Shops-account. En hij doet het elke 15 minuten. Als deze SQL-items niet worden gecontroleerd, kunt u enkele honderdduizenden regels krijgen"wc_facebook_regenerate_feed"In"wp_actionscheduler_actions'.

Dit interval is oké voor winkels met een groot aantal bestellingen en de voorraad van Facebook Shops-producten moet constant worden bijgewerkt. Als u nog steeds denkt dat deze synchronisaties tussen Facebook en uw winkel eenmaal per 24 uur kunnen worden uitgevoerd, kan de onderstaande coderegel helpen.

Open het bestand Functions.php van het thema WordPress / WooCommerce waarop uw winkel draait en voeg toe:

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

Vervolgens kunnen we een interval van een week instellen voor automatische reiniging:

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

Zodra u deze wijzigingen opslaat, heeft u geen problemen met gigantische tabellen voor "wp_actionscheduler_actions".

Gepassioneerd door technologie, schrijf ik met plezier op StealthSettings.com sinds 2006. Ik heb ruime ervaring met besturingssystemen: macOS, Windows en Linux, evenals met programmeertalen en blogplatformen (WordPress) en voor online winkels (WooCommerce, Magento, PrestaShop).

Hoe werkt het? » Curiosity » FIX ENORME SQL-tabellen: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce tips]

1 gedachte over “REPAREER ENORME SQL-tabellen: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]"

  1. @Stealth
    Tak voor hjælpen. Du redder min dag og shop. Jeg opdagede voor de efter et nedbrud uit min webshop. Mange plugins er begyndt op dumpe deres output i den tabel en det fylder… Wooping 9.2GB tabel fik min host til at opgive hans ellers fine opp-tid. Nu trimmer jeg med den fijne kode!
    Luik en spørgsmål in falde rebet denne tabel “wpb_action_scheduler_purge” er det nl default ik db'en eller skal jeg evt. hernoem den til noget i min (default hedder min db ikke 'wp_') eller er det måske en funktion?
    Tak voor hjælpen og den super fijn artikel

    vriendelijke groeten
    Netwerk

    Antwoorden
Laat een bericht achter