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_actionsiactionscheduler_logscreixen 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
- WP-Cron no s’executa de manera fiable: poc trànsit,
DISABLE_WP_CRONdefinit sense un cron real que el substitueixi, o peticions loopback bloquejades pel hosting o per un plugin de seguretat. - 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.
- 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.
- 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.
- 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:
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_CRONdefinit awp-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?
$ wp action-scheduler run --batch-size=50Registres 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_CRONawp-config.php; el crontab del servidor.- Salut del lloc per a problemes amb loopback i esdeveniments programats.
- Mida de les taules
actionscheduler_actionsiactionscheduler_logs.
Solucions
- Executa WP-Cron des del servidor en llocs amb molt o amb poc trànsit: defineix
DISABLE_WP_CRONi afegeix un cron que s’executi cada minut.
# 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
TRUNCATEni 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.
Problemes relacionats
- WooCommerce / Integracions Webhooks de WooCommerce que fallen: com diagnosticar-los Registres de lliurament, codis de resposta, signatures i per què WooCommerce desactiva un webhook després de diversos lliuraments fallits seguits.
- WooCommerce / Rendiment Checkout lent a WooCommerce: què cal revisar Separa el temps de PHP, les consultes a la base de dades i les crides a APIs externes abans de canviar la memòria cau o el hosting.
- WooCommerce / Pagaments WooCommerce: el pagament falla però al client se li ha cobrat Quan la passarel·la cobra el pagament però la comanda queda pendent o fallida, revisa el traspàs de callbacks i webhooks abans de tocar la comanda.
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.