Action Scheduler er WooCommerce’ kø til arbejde, der skal ske i baggrunden: synkronisering med regnskab og lager, fornyelse af abonnementer, webhooks, opdatering af statistik og meget af det, plugins laver uden for kundens sidevisning. Så længe køen kører, mærker du den ikke. Når den hober sig op, sker tingene for sent eller slet ikke, og shoppen kan blive langsommere.
Her gennemgår vi, hvordan du læser køen, hvorfor den vokser, og hvordan du får den til at køre igen uden at slette arbejde, der stadig skal udføres.
Hvad Action Scheduler gør
Hver opgave i køen er en handling med et navn (en hook), de data, den skal bruge, og et tidspunkt, den skal køre. Handlingerne ligger i databasetabellen wp_actionscheduler_actions, og det, der sker med dem, logges i wp_actionscheduler_logs. En handling har en af disse statusser:
| Status | Betyder |
|---|---|
| Ventende (pending) | Venter på sit tidspunkt eller på at blive kørt |
| Forsinket (past-due) | Ventende, men tidspunktet er passeret. Mange af dem betyder, at køen ikke bliver kørt |
| I gang (in-progress) | Bliver kørt lige nu. Hænger den der længe, er den sandsynligvis gået i stå |
| Fuldført (complete) | Kørt uden fejl |
| Fejlet (failed) | Kørt med en fejl. Loggen viser hvilken |
| Annulleret (canceled) | Fjernet, før den blev kørt |
Køen bliver kørt af WP-Cron. Som standard starter WP-Cron, når nogen besøger sitet, og det er den svage plet: på en shop med få besøg, eller hvor de fleste sider kommer fra en cache uden at nå PHP, bliver køen kørt sjældent og ujævnt.
Sådan læser du køen
Gå til WooCommerce → Status → Planlagte handlinger. Øverst kan du filtrere på status, og antallet står ved hver. Se især på tre ting:
- Forsinkede handlinger: Er der mange, og bliver tallet ved med at stige, bliver køen ikke kørt ofte nok.
- Fejlede handlinger: Sortér efter hook. Kolonnen med hook og gruppe viser, hvilket plugin handlingen hører til, og loggen viser fejlbeskeden.
- Ventende handlinger fra ét plugin: Er der tusindvis af ventende handlinger med samme hook, lægger det plugin mere arbejde i køen, end den kan nå.
Hvorfor køen hober sig op
- WP-Cron kører ikke: Der er for få besøg, der rammer PHP, eller WP-Cron er slået fra i
wp-config.phpmedDISABLE_WP_CRON, uden at serveren kører den i stedet. Så står alt stille. - Handlinger, der fejler hver gang: En integration med forkerte loginoplysninger, et API, der er lukket, eller en fejl i et plugin. Hver handling bruger tid og fejler igen.
- Handlinger fra plugins, der er fjernet: Når et plugin slås fra, bliver dets ventende handlinger liggende. Der er ingen kode til at køre dem, så de fejler.
- For meget arbejde på én gang: En import, en masseopdatering af produkter eller en synkronisering, der lægger én handling pr. produkt eller ordre, kan fylde køen hurtigere, end den bliver tømt.
- Langsomme handlinger: Handlinger, der venter på svar fra andre servere, kan løbe ind i PHP’s tidsgrænse og blive hængende som “i gang”.
Sådan får du køen til at køre igen
Kør WP-Cron fra serveren. Det er det vigtigste. Bed din hostingudbyder om at køre WP-Cron fra serveren på et fast interval, fx hvert minut, og slå den besøgsstyrede kørsel fra. Så kører køen jævnt, uanset hvor mange der besøger shoppen, og ikke oven i kundernes sidevisninger. Hvorfor det betyder noget for hele shoppen, står i afsnittet om baggrundsjob i fejlfindingsguiden.
Ret årsagen til fejlene. Læs fejlbeskeden på de fejlede handlinger, og ret det, de peger på: loginoplysninger til en integration, et plugin, der skal opdateres, eller en indstilling. Det hjælper ikke at rydde op, hvis den samme fejl lægger nye handlinger i køen hver time.
Annullér det, der ikke skal køre. Handlinger fra plugins, du har fjernet, kan annulleres fra listen, også flere ad gangen. Ventende handlinger fra plugins, du stadig bruger, skal du lade være: de er arbejde, der ikke er gjort endnu, fx en abonnementsfornyelse eller en ordre, der skal sendes til regnskab.
Tøm en stor kø fra serveren. Har du eller din hostingudbyder adgang til WP-CLI, kan køen køres med wp action-scheduler run. Det er hurtigere end at vente på WP-Cron, når der ligger meget, fx efter et nedbrud eller en import.
Store tabeller og oprydning
Action Scheduler sletter selv gamle handlinger. Fuldførte og annullerede handlinger fjernes som standard efter 30 dage. Fejlede handlinger blev tidligere aldrig slettet, og på travle shops kunne de fylde tabellerne op. Fra Action Scheduler 4.0, som kom med WooCommerce 11.0, slettes fejlede handlinger efter tre måneder, og oprydningen kører som et fast dagligt job. Det står i WooCommerce’ gennemgang af ændringerne i Action Scheduler 4.0 (på engelsk).
Kører shoppen en ældre version af WooCommerce, eller er tabellerne blevet meget store, før oprydningen kom, er det værd at opdatere og så lade oprydningen arbejde. Rydder du selv op, så tag en backup først, og slet kun fuldførte, annullerede og fejlede handlinger og deres logs. Store tabeller gør især admin og køen selv langsommere. De andre årsager til en langsom admin står i vores guide til en langsom WooCommerce-admin.
Skal du skifte ordrelagring til HPOS, kopieres ordrerne også gennem køen. Få den til at køre stabilt først. Forløbet står i vores guide til HPOS-migrering uden nedetid.
Ofte stillede spørgsmål
Kan jeg bare tømme tabellen?
Nej. De ventende handlinger er arbejde, der ikke er gjort, og sletter du dem, sker det aldrig. Slet kun fuldførte, annullerede og fejlede handlinger, og ret årsagen til fejlene først.
Er det et problem, at der er mange fuldførte handlinger?
Sjældent. De bliver slettet automatisk efter 30 dage. Det er de forsinkede og fejlede, du skal holde øje med.
Vil du have hjælp?
En kø, der står stille, opdager du tit først, når ordrer mangler i regnskabet eller et abonnement ikke er fornyet. Vil du have, at vi finder ud af, hvorfor din kø hober sig op, så læs om optimering af din WooCommerce-shop. Vi kigger gratis på din shop først og siger, hvad der skal til.