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".

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

A propos de l'auteur

infiltration

Passionné de tout gadget et informatique, j'écris avec plaisir sur la furtivitésettings.com depuis 2006 et j'aime découvrir avec vous de nouvelles choses sur les ordinateurs et les systèmes d'exploitation macOS, Linux, Windows, iOS et Android.

Laisser un commentaire