FIX ÉNORMES tables SQL: wp_actionscheduler_actions & wp_actionscheduler_logs [WooCommerce Tips]

WooCommerce c'est devenu un module largement utilisé boutiques en ligne. SEO, produit, gestion des stocks, code propre et intuitif, interface d'administration simple et des milliers de plugins développés pour Woo, ne sont que quelques-uns des arguments pour lesquels il vaut la peine de tenter le développement d'une boutique en ligne.

Comme tout CMS, Woo ne fait pas exception aux bizarreries qui peuvent survenir dans différents scénarios d'utilisation ou d'interaction avec d'autres plugins WordPress.
Sur un serveur de ressources matériel assez généreux, j'ai remarqué que service de base de données (mysqld) commence à nécessiter près de 80 à 90% de RAM. Un problème assez grave, car je ne comprenais tout simplement pas d'où venait périodiquement l'erreur 110 (110: la connexion a expiré).
En examinant de plus près les processus SQL, j'ai trouvé qu'une base de données contient deux tables avec des volumes assez importants: wp_actionscheduler_actions si wp_actionscheduler_logs.

normalement, actions planifiées de Planificateur d'actions WooCommerce ils doivent être supprimés automatiquement après leur exécution. Cela ne se produit pas toujours, et ils restent bloqués dans wp_actionsscheduler_actions avec le statut: manqué, annulé, En attente ou complet.

Dans l'image ci-dessus, les tableaux "wp_actionsscheduler"Ils ont seulement un peu plus de 15 Mo. Je suis désolé de ne pas avoir été inspiré pour prendre une capture d'écran alors qu'ils avaient 1.2 GB. Même ainsi, 15 Mo suffisent pour une table contenant les actions planifiées de WooCommerce.
Ces tableaux "gonflés" résultent de cela WP-Cron ne supprime pas les entrées qui ont un statut "manqué","annulé"Et"complet«. Normalement, ces entrées doivent être automatiquement supprimées de la base de données.
Les actions programmées et leur état peuvent être vus très facilement et en WooCommerce →  Statut →  Actions planifiées.

Comment nettoyer les gouttières "manqué","annulé"Et"complet"en wp_actionscheduler_actions si wp_actionscheduler_logs

Nous accédons à la base de données via phpMyAdmin, puis chez SQL nous exécutons les lignes de commande à tour de rôle:

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

Une fois cette table nettoyée, cela ne signifie pas que le problème est résolu. Comme je l'ai dit ci-dessus, la cause principale est la désactivation du service WP-Cron pour diverses raisons. Ainsi, les entrées avec le statut "zombie" ne peuvent plus être supprimées.
Il est très important de savoir que si vous avez une boutique en ligne sur WooCommerce, et qu'elle est connectée à Facebook Shops via le plugin "Facebook pour WooCommerce", Il synchronise automatiquement les produits WooCommerce avec votre compte Facebook Shops. Et il le fait en 15 minutes environ. Si ces entrées SQL ne sont pas contrôlées, vous pouvez obtenir plusieurs centaines de milliers de lignes. "wc_facebook_regenerate_feed"Dans"wp_actionscheduler_actions" .

Cet intervalle est acceptable pour les magasins qui ont un grand nombre de commandes et le stock de produits Facebook Shops doit être constamment mis à jour. Si vous pensez toujours que ces synchronisations entre Facebook et votre boutique peuvent être effectuées une fois toutes les 24 heures, la ligne de code ci-dessous peut vous aider.

Ouvrez le fichier functions / php du thème WordPress / WooCommerce sur lequel votre boutique s'exécute et ajoutez:

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

Ci-dessous, nous pouvons définir un intervalle d'une semaine pour le nettoyage automatique:

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

Une fois que vous avez enregistré ces modifications, vous n'aurez aucun problème avec les tables géantes pour "wp_actionscheduler_actions".

Passionné de technologie, j'aime tester et écrire des tutoriels sur les systèmes d'exploitation macOS, Linux, Windows, sur la configuration des serveurs Web WordPress, WooCommerce et LEMP (Linux, NGINX, MySQL et PHP). j'écris sur StealthSettings.com depuis 2006, et quelques années plus tard, j'ai commencé à écrire sur des tutoriels iHowTo.Tips et des actualités sur les appareils de l'écosystème Apple: iPhone, iPad, Apple Montre, HomePod, iMac, MacBook, AirPods et accessoires.

1 réflexion sur « FIX ÉNORMES tables SQL : wp_actionscheduler_actions & wp_actionscheduler_logs [Conseils WooCommerce] »

  1. @Stealth
    Prenez pour hjælpen. Du redder min dag og shop. Jeg opdagede first dette efter et nedbrud af min boutique en ligne. Mange plugins er begyndt at dumpe deres output i den tabel og det fylder… Wooping 9.2GB tabel fik min host til at opgive hans ellers fine opp-tid. Nu trimmer jeg med den fine kode!
    Lige et spørgsmål på falde rebet denne table « wpb_action_scheduler_purge » default je db'en eller skal jeg evt. renommer den til noget i min (default hedder min db ikke 'wp_') eller er det måske en funktion?
    Tak for hjælpen og den super fine artikel

    Salutations
    Netzie

    Répondre

Laisser un commentaire