Hopp til innhold
Siden er treg eller ustabil

wp-cron gjør siden treg

WordPress kjører planlagte oppgaver idet noen besøker siden. Har siden mye trafikk, bør serveren kjøre dem i stedet.

Du trenger
FTP
Oppdatert

WP-Cron er ikke en ekte cron-jobb. WordPress sjekker ved hver sidevisning om en planlagt oppgave har passert tidspunktet sitt, og starter i så fall wp-cron.php som en egen forespørsel mot seg selv, høyst én gang i minuttet. Planlagte innlegg, automatiske oppdateringer, sikkerhetskopier fra utvidelser og køen i WooCommerce er slike oppgaver.

Besøkende venter ikke på oppgavene, men oppgavene deler PHP-prosesser og database med dem. På en side med mye trafikk gjør tunge oppgaver derfor alt tregere. På en side med lite trafikk, eller der sidene vises fra cachen uten at WordPress starter, er problemet det motsatte: oppgavene kjører for sent. I begge tilfeller er løsningen å la serveren starte oppgavene til faste tider.

Se hva som er planlagt

  1. Gå til Verktøy → Nettstedshelse. Meldingene «En planlagt hendelse er forsinket» og «En planlagt hendelse mislyktes» betyr at oppgavene ikke kjører som de skal.
  2. Et innlegg merket «Mistet planlegging» i innleggslisten ble ikke publisert fordi wp-cron ikke kjørte i tide.
  3. Installer utvidelsen WP Crontrol. Under Verktøy → Cron Events ser du alle planlagte oppgaver, hvor ofte de kjører og når de kjører neste gang. Se etter oppgaver som kjører svært ofte, og oppgaver fra utvidelser du har slettet.
  4. Med WooCommerce finner du køen under WooCommerce → Status → Planlagte handlinger. Ligger det mange ventende handlinger der som skulle ha kjørt for lenge siden, kjører ikke køen som den skal.

Står det «Nettstedet ditt kunne ikke fullføre et tilbakekall.» i Nettstedshelse, får ikke WordPress sendt forespørsler til seg selv (loopback), og da starter ikke wp-cron. Det skjer for eksempel når siden er beskyttet med passord på serveren (Basic Auth), eller når en brannmur blokkerer serverens egen IP-adresse. Med WP-CLI tester wp cron test det samme.

Slå av wp-cron ved sidevisninger

Åpne wp-config.php via FTP eller i filbehandleren i hostingpanelet, og legg til denne linjen rett over linjen med require_once ABSPATH . 'wp-settings.php';:

define( 'DISABLE_WP_CRON', true );

Fra nå av starter ikke WordPress oppgavene ved sidevisninger. Gjør dette bare sammen med neste steg, for uten en cron-jobb på serveren kjører ingen planlagte oppgaver i det hele tatt.

La serveren kjøre wp-cron

Gå til siden for cron-jobber eller planlagte oppgaver i hostingpanelet, og legg inn en jobb som åpner wp-cron.php med jevne mellomrom:

wget --delete-after https://dittdomene.no/wp-cron.php

Bytt ut domenet med ditt eget. Hvor ofte jobben skal kjøre, bestemmer du selv. Hvert femte minutt (*/5 * * * *) er et vanlig valg, og da blir ingen oppgave mer enn omtrent fem minutter forsinket.

Hvis serveren har WP-CLI, kan jobben heller kjøre oppgavene direkte på serveren, uten en forespørsel over nettet:

wp cron event run --due-now --path=/sti/til/wordpress

Bytt ut /sti/til/wordpress med mappen WordPress ligger i. Mappen finner du i filbehandleren i hostingpanelet.

Sjekk at det virker

Vent til jobben har kjørt noen ganger, og åpne Verktøy → Cron Events igjen. Neste kjøring skal nå ligge frem i tid, ikke på et tidspunkt som allerede har passert. Sjekk også at Nettstedshelse ikke lenger melder om forsinkede hendelser.

Når det ikke hjelper

Kjører cron-jobben på serveren og siden fortsatt er treg, er det enten selve oppgavene som er tunge, eller så skyldes tregheten noe annet enn wp-cron. Da må du finne ut hvilken utvidelse oppgavene kommer fra, og om oppgavene kan kjøre sjeldnere eller om natten. Hvis hostingpanelet ikke har noen side for cron-jobber, kan du be hostingleverandøren sette opp jobben for deg. Ellers kan en ekstern tjeneste, for eksempel cron-job.org, åpne wp-cron.php til faste tider.