Aller au contenu
WooRescueHQ

WooCommerce / Performance

Problèmes d’Action Scheduler dans WooCommerce

Réponse courte

Action Scheduler est la file de tâches de fond utilisée par WooCommerce et de nombreuses extensions pour les webhooks, les e-mails, les renouvellements et les synchronisations. Les problèmes apparaissent sous forme d’actions en retard ou échouées dans Outils → Actions planifiées. Des actions en retard signifient que la file n’est pas traitée, généralement parce que WP-Cron ne s’exécute pas de façon fiable. Des actions échouées signifient que la tâche elle-même plante, et le journal de l’action explique pourquoi. Corrigez le runner ou le code en échec ; ne videz jamais les tables.

Symptômes

  • Outils → Actions planifiées (aussi dans WooCommerce → État) affiche beaucoup d’actions En attente avec des dates passées, ou beaucoup d’actions Échouées.
  • Un avertissement dans l’administration signale des actions en retard.
  • Les webhooks, les e-mails de commande, les renouvellements d’abonnements ou les synchronisations ERP arrivent en retard, ou pas du tout.
  • Les tables actionscheduler_actions et actionscheduler_logs atteignent des millions de lignes.
  • Le site ralentit quand la file rattrape soudain son retard.

Comment fonctionne Action Scheduler

Les actions sont stockées en base de données et traitées par lots par un runner. Le runner est déclenché par WP-Cron (chaque minute) et, lors des requêtes d’administration, par une requête asynchrone ; il peut aussi être lancé avec WP-CLI. Chaque lot traite un nombre limité d’actions dans une limite de temps, donc une grosse accumulation demande de nombreuses exécutions pour être résorbée.

Causes les plus fréquentes

  1. WP-Cron ne s’exécute pas de façon fiable : peu de trafic, DISABLE_WP_CRON défini sans vraie tâche cron pour le remplacer, ou requêtes loopback bloquées par l’hébergeur ou une extension de sécurité.
  2. Les actions échouent : une erreur PHP dans la tâche, une API externe qui refuse ou expire, ou des données que la tâche n’attend pas.
  3. Un déluge d’actions : une extension qui planifie une action par produit, commande ou client, ou qui replanifie sans cesse la même action.
  4. Des lots trop lents : chaque action prend des secondes (appels externes), donc un lot n’en traite que quelques-unes avant sa limite de temps.
  5. Des réservations périmées : un runner est mort en plein lot et ses actions restent réservées jusqu’à leur libération.

Diagnostic

1. Lisez la file

Dans Outils → Actions planifiées, regardez les totaux par statut, puis filtrez sur En attente et triez par date : de quand date l’action en retard la plus ancienne ? Filtrez sur Échouée et ouvrez-en quelques-unes : la colonne de journal affiche l’exception ou le message d’erreur.

2. Trouvez les hooks dominants

Sur une copie de la base de données, une requête en lecture seule montre quelles tâches remplissent la file :

SQL
SELECT hook, status, COUNT(*) AS total
FROM wp_actionscheduler_actions
GROUP BY hook, status
ORDER BY total DESC
LIMIT 20;

(Remplacez wp_ par le préfixe de vos tables.) Un ou deux hooks représentent généralement la plupart des lignes, et leurs noms désignent l’extension responsable.

3. Vérifiez que le runner s’exécute

  • DISABLE_WP_CRON est-il défini dans wp-config.php ? Si oui, une vraie tâche cron appelle-t-elle WP-Cron ou WP-CLI chaque minute ?
  • Outils → Santé du site signale-t-il des problèmes d’événements planifiés ou de requêtes loopback ?
  • Lancer la file à la main traite-t-il les actions ?
Bash
$ wp action-scheduler run --batch-size=50

Journaux et vérifications techniques

  • Écran des Actions planifiées : totaux, plus ancienne action en retard, actions échouées et leurs journaux.
  • WooCommerce → État → Journaux (fatal-errors) et le journal d’erreurs PHP aux heures où les actions échouent.
  • DISABLE_WP_CRON dans wp-config.php ; la crontab du serveur.
  • Santé du site pour les problèmes de loopback et d’événements planifiés.
  • Taille des tables actionscheduler_actions et actionscheduler_logs.

Solutions

  • Lancez WP-Cron depuis le serveur sur les sites à fort ou à faible trafic : définissez DISABLE_WP_CRON et ajoutez une tâche cron qui s’exécute chaque minute.
Bash
# crontab : exécute chaque minute les événements cron WordPress échus
* * * * * cd /path/to/wordpress && wp cron event run --due-now --quiet
  • Corrigez les tâches en échec : les journaux des actions nomment l’erreur ; corrigez le code ou l’intégration appelée, puis laissez le travail échoué être relancé ou replanifié comme prévu par l’extension.
  • Résorbez les accumulations de façon maîtrisée : lancez la file avec WP-CLI aux heures creuses, en surveillant la charge du serveur.
  • Arrêtez le déluge à la source : corrigez ou reconfigurez l’extension qui planifie trop d’actions.
  • Laissez le nettoyage fonctionner : les actions terminées sont supprimées après la période de rétention dès que le runner fonctionne normalement.
  • Ajustez avec prudence : la taille des lots, la limite de temps et les lots simultanés peuvent être augmentés par des filtres, mais seulement une fois le runner fiable et si le serveur en a la capacité.

Ce qu’il ne faut pas faire

  • Ne faites pas de TRUNCATE ni de suppressions massives dans les tables d’Action Scheduler. Les lignes en attente incluent des renouvellements d’abonnements, des webhooks, des e-mails et des synchronisations qui n’ont pas encore eu lieu.
  • Ne marquez pas des actions échouées comme terminées sans comprendre ce qu’elles devaient faire.
  • N’augmentez pas la concurrence sur un serveur déjà en difficulté ; cela ajoute de la charge sans corriger la cause.

Quand faire appel à un expert

Faites appel à un ingénieur quand des actions échouées touchent des paiements, des renouvellements ou des synchronisations de commandes, quand les tables sont énormes et que le site ralentit, ou quand vous ne savez pas quelles actions en attente peuvent être supprimées sans risque.

Questions fréquentes

Que signifie l’avertissement sur les actions en retard ?

Ce sont des actions dont l’heure prévue est passée mais qui ne se sont pas encore exécutées. Quelques-unes pendant peu de temps, c’est normal sur un site à faible trafic ; un nombre croissant signifie que la file n’est pas traitée.

Peut-on supprimer des actions planifiées sans risque ?

Les actions terminées et annulées ne sont que de l’historique et sont nettoyées automatiquement après la période de rétention. Les actions en attente sont du travail pas encore effectué (renouvellements, webhooks, e-mails) et ne doivent pas être supprimées sans savoir ce qu’elles sont.

Pourquoi mes tables actionscheduler sont-elles si volumineuses ?

Généralement parce qu’une extension planifie un très grand nombre d’actions, parce que des actions échouées s’accumulent ou parce que le nettoyage des actions terminées ne s’exécute pas. Identifiez les hooks qui dominent la table avant de décider quoi faire.

Peut-on lancer Action Scheduler en ligne de commande ?

Oui. Avec WP-CLI, wp action-scheduler run traite la file. C’est utile pour résorber une accumulation et pour voir les erreurs directement.

$ décrivez le problème

Un problème avec WooCommerce ?Demandez un diagnostic.

Dites-nous ce qui ne fonctionne pas, ce qui a changé récemment et l'impact sur votre activité. Nous examinons chaque demande et vous recommandons la marche à suivre.

Demander un diagnostic Voir les services et les tarifs

N'envoyez jamais de mots de passe, de clés API ni de données de carte via le formulaire.

Diagnostic à partir de299 €

Demander un diagnostic