Salta al contingut
WooRescueHQ

WooCommerce / Rendiment

Problemes amb Action Scheduler a WooCommerce

Resposta curta

Action Scheduler és la cua de tasques en segon pla que fan servir WooCommerce i moltes extensions per a webhooks, correus, renovacions i sincronitzacions. Els problemes apareixen com a accions vençudes o fallides a Eines → Accions programades. Les accions vençudes volen dir que la cua no es processa, normalment perquè WP-Cron no s’executa de manera fiable. Les accions fallides volen dir que la mateixa tasca dona error, i el registre de l’acció explica per què. Arregla el runner o el codi que falla; no buidis mai les taules.

Símptomes

  • Eines → Accions programades (també a WooCommerce → Estat) mostra moltes accions Pendents amb dates passades, o moltes accions Fallides.
  • Un avís a l’administració informa que s’han trobat accions vençudes.
  • Els webhooks, els correus de comandes, les renovacions de subscripcions o les sincronitzacions amb l’ERP arriben tard o no arriben.
  • Les taules actionscheduler_actions i actionscheduler_logs creixen fins a milions de files.
  • El lloc s’alenteix quan la cua es posa al dia de cop.

Com funciona Action Scheduler

Les accions es desen a la base de dades i un runner de la cua les processa per lots. El runner el dispara WP-Cron (cada minut) i, a les peticions de l’administració, una petició asíncrona; també es pot executar amb WP-CLI. Cada lot processa un nombre limitat d’accions dins d’un límit de temps, així que una acumulació gran necessita moltes execucions per buidar-se.

Causes més habituals

  1. WP-Cron no s’executa de manera fiable: poc trànsit, DISABLE_WP_CRON definit sense un cron real que el substitueixi, o peticions loopback bloquejades pel hosting o per un plugin de seguretat.
  2. Les accions fallen: un error PHP a la tasca, una API externa que la rebutja o supera el temps, o dades que la tasca no espera.
  3. Una allau d’accions: un plugin que programa una acció per producte, comanda o client, o que reprograma la mateixa acció una vegada i una altra.
  4. Lots massa lents: cada acció triga segons (crides externes), així que un lot només en processa unes poques abans del seu límit de temps.
  5. Reserves caducades: un runner ha mort a mig lot i les seves accions continuen reservades fins que s’alliberen.

Diagnosi

1. Llegeix la cua

A Eines → Accions programades, revisa els totals per estat; després filtra per Pendent i ordena per data: quina antiguitat té l’acció vençuda més vella? Filtra per Fallida i obre’n algunes: la columna de registre mostra l’excepció o el missatge d’error.

2. Esbrina quins hooks dominen

Sobre una còpia de la base de dades, una consulta de només lectura mostra quines tasques omplen la cua:

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

(Substitueix wp_ pel prefix de les teves taules.) Un o dos hooks solen acumular la majoria de files, i els seus noms apunten al plugin responsable.

3. Comprova que el runner s’executa

  • Hi ha DISABLE_WP_CRON definit a wp-config.php? Si és així, hi ha un cron real que cridi WP-Cron o WP-CLI cada minut?
  • Eines → Salut del lloc informa de problemes amb els esdeveniments programats o amb les peticions loopback?
  • Executar la cua a mà processa les accions?
Bash
$ wp action-scheduler run --batch-size=50

Registres i comprovacions tècniques

  • Pantalla d’Accions programades: totals, la vençuda més antiga, les accions fallides i els seus registres.
  • WooCommerce → Estat → Registres (fatal-errors) i el registre d’errors PHP a les hores en què fallen les accions.
  • DISABLE_WP_CRON a wp-config.php; el crontab del servidor.
  • Salut del lloc per a problemes amb loopback i esdeveniments programats.
  • Mida de les taules actionscheduler_actions i actionscheduler_logs.

Solucions

  • Executa WP-Cron des del servidor en llocs amb molt o amb poc trànsit: defineix DISABLE_WP_CRON i afegeix un cron que s’executi cada minut.
Bash
# crontab: executa cada minut els esdeveniments cron de WordPress pendents
* * * * * cd /path/to/wordpress && wp cron event run --due-now --quiet
  • Arregla les tasques que fallen: els registres de les accions anomenen l’error; arregla el codi o la integració a la qual crida i deixa que la feina fallida es reintenti o es reprogrami tal com preveu el plugin.
  • Buida les acumulacions de manera controlada: executa la cua amb WP-CLI en hores tranquil·les, vigilant la càrrega del servidor.
  • Talla l’allau a l’origen: arregla o reconfigura el plugin que programa accions en excés.
  • Deixa que la neteja funcioni: les accions completades s’eliminen després del període de retenció quan el runner funciona amb normalitat.
  • Ajusta amb compte: la mida del lot, el límit de temps i els lots simultanis es poden apujar amb filtres, però només quan el runner és fiable i el servidor té capacitat.

Què no s’ha de fer

  • No facis TRUNCATE ni esborrats massius a les taules d’Action Scheduler. Les files pendents inclouen renovacions de subscripcions, webhooks, correus i sincronitzacions que encara no han passat.
  • No marquis accions fallides com a completades sense entendre què havien de fer.
  • No apugis la concurrència en un servidor que ja va just; afegeix càrrega sense arreglar la causa.

Quan recórrer a un expert

Recorre a un enginyer quan les accions fallides afecten pagaments, renovacions o sincronitzacions de comandes, quan les taules són enormes i el lloc s’alenteix, o quan no tens clar quines accions pendents es poden eliminar amb seguretat.

Preguntes freqüents

Què vol dir l’avís d’accions vençudes?

Són accions l’hora programada de les quals ja ha passat però que encara no s’han executat. Unes poques durant poc temps és normal en llocs amb poc trànsit; un nombre creixent vol dir que la cua no es processa.

És segur esborrar accions programades?

Les accions completades i cancel·lades són només historial i es netegen automàticament després del període de retenció. Les accions pendents són feina que encara no s’ha fet (renovacions, webhooks, correus) i no s’han d’esborrar sense saber què són.

Per què les meves taules actionscheduler són tan grans?

Normalment perquè un plugin programa quantitats enormes d’accions, perquè s’acumulen accions fallides o perquè la neteja de les completades no s’executa. Esbrina quins hooks dominen la taula abans de decidir què fer.

Puc executar Action Scheduler des de la línia d’ordres?

Sí. Amb WP-CLI, wp action-scheduler run processa la cua. És útil per buidar una acumulació i per veure els errors directament.

$ descriu el problema

Tens un problema amb WooCommerce?Sol·licita una diagnosi.

Explica'ns què falla, què ha canviat darrerament i com afecta el negoci. Revisem cada sol·licitud i et recomanem el pas següent.

Sol·licitar una diagnosi Veure serveis i preus

No enviïs mai contrasenyes, claus d'API ni dades de targetes a través del formulari.

Diagnosi des de299 €

Sol·licitar una diagnosi