Innsikt i WP-Cron En introduksjon til planleggingsoppgaver i WordPress

I dag ser vi på WP-Cron-funksjonene, et av de mindre kjente triksene som du kan bruke til litt moro! Hovedformålet er å sette opp planlegging eller andre tidsfølsomme oppgaver. Vi vil undersøke noen triks for å bruke den, og vi vil også identifisere noen potensielle problemer med det og hvordan du kan jobbe rundt dem.

WordPress er et kraftig stykke programvare. Dens enkelhet kan ofte gi feil inntrykk til ikke-tekniske brukere om sin indre arbeid selv. Dette kan ha tjent i WordPress 'beste interesse, som noe som føles enkelt og enklere å bruke, er vanligvis vedtatt av massene. Det er imidlertid viktig å huske at bak kulissene er et kraftig stykke programvare som er i stand til å gjøre litt mer enn enkel blogging.

En av funksjonene i WordPress som er skrevet mindre om, må være WP-Cron (sjekk kodeseks siden på WP-Cron her). Nå er de som har jobbet med generalen Cron på en Linux server kjenner kraften til denne funksjonen.

Hva er Cron?

Cron er en UNIX-kommando for planlegging av jobber som skal utføres en gang i fremtiden. EN cron brukes vanligvis til å planlegge en jobb som utføres regelmessig. For eksempel kan du bruke en cron-funksjon til å sende ut et varsel hver morgen. Det er også en daemon prosess, noe som betyr at det løper kontinuerlig og venter på at bestemte hendelser oppstår.


Slik fungerer det

Som WordPress er installert på så mange forskjellige oppsett, for å få ting til å kjøre riktig, implementerte WordPress-utviklere en pseudo-cron som inkluderer WP-Cron funksjoner som hjelper til med å planlegge jobber som:

  • Sjekker for tema og plugin oppdateringer
  • Publiser planlagte innlegg
  • Sende pingbacks
  • og mer!

I motsetning til vanlige cron-jobber, som kjører på bestemt tidspunkt basert på serverinnstillingene, kjører WP-Cron-funksjonen hver gang noen besøker WordPress-drevet nettsted. Dette gjør at et WordPress-nettsted kjøres riktig på forskjellige typer serveroppsett fordi det eliminerer mange serverspesifikke krav. På hver sidelast kontrollerer WordPress om det er behov for WP-Cron å kjøre. Hvis det er behov, forsøker det å gjøre en forespørsel over HTTP til wp-cron.php fil.

Grunnen til å ringe wp-cron.php er fordi noen jobber kan ta lengre tid, og brukeren som ber om WordPress-siden kan ikke gjøres til å vente. Å ringe wp-cron.php bidrar til at WP-Cron-funksjonen kjører som en separat prosess i bakgrunnen uten å forsinke sidelastningstiden for brukeren. Når WP-Cron-funksjonen starter, fortsetter den å løpe til alle nødvendige jobber er fullført eller til det når en kjøretid som angitt i serverkonfigurasjonen.

Basert på oppsettet av webverten, kan WP-Cron mislykkes i å fullføre jobben, eller det kan ikke fungere i det hele tatt. Høy trafikk nettsteder står overfor et annet sett med problemer som flere WP-Cron prosesser som kjører i looper. For det meste folk skylder WordPress for det, men det er ikke nødvendigvis et problem med WordPress. Hver situasjon er annerledes og basert på det kan vi tilpasse WordPress til å kjøre på best mulig måte. Nedenfor finner du noen av de vanlige problemene folk står overfor og hvordan de skal løses.


Noen problemer med WP-Cron

Problem: WP-Cron-prosess med flere prosesser på høytrafikwebsteder

Hvis du er en serveradministrator eller administrerer din egen server med en brannmur, har du kanskje mottatt e-postmeldinger fra brannmuren din om en fil "wp-cron.php" kjører i lang tid. Dette skjer når manøvreringstiden for skriptet på serveren din er mer enn 60 sekunder. Siden prosessen ikke er avsluttet, og siden nye prosesser startes, kjører flere forekomster av WP-Cron-prosessen på serveren.

Dette skjer ikke på et nettsted med lav trafikk, men hvis din WordPress-drevne nettside har samtidige brukere når som helst og maksimal eksekveringstid for skriptet er satt høyt, vil det være mange forekomster av denne WP-Cron-funksjonen som kjører. Inntil en nylig versjon av WordPress, var det alltid et problem med flere cron prosesser looping over de samme hendelsene.

MERK: WordPress 3.3 gir oss enda bedre cron locking. Denne artikkelen ble skrevet akkurat som WordPress 3.3 ble utgitt, noe som gir bedre cron-låsing og unngår flere WP-Cron-prosesser looping over de samme hendelsene.

Problem: Planlagte innlegg savnet

Et annet stort rapportert problem med noen hostingleverandører og noen svært lave trafikkwebsteder er planlagte innlegg som ikke blir publisert. Siden WP-Cron-funksjonen bare kjører når det er en sideforespørsel, hvis det ikke er noen forespørsler, kjøres de planlagte jobbene ikke.

Merk: Det er ikke noe problem med WordPress. Også siden versjon 3.x har dette blitt rapportert mye mindre. Men det er mange plugins for å ta vare på dette problemet.

Problem: WP-Cron kjører ikke i det hele tatt

Igjen er dette et problem med serveroppsettet. På grunn av feil innstillinger blokkerer brannmur som stopper skript fra å ringe seg selv, så WP-Cron-funksjonen virker ikke.


Mulig løsning på de fleste WP-Cron-problemer

For å unngå at flere forekomster av WP-Cron kjører på serveren din for et enkelt nettsted, har jeg forsøkt å bruke standard måte å sette opp cron-jobber på en Linux-server (Apache med cPanel som kontrollpanel). Fordelen med denne metoden er:

  • Mer kontroll på når WP-Cron-funksjonen kjører.
  • Unngå flere løkker.
  • Hvis du eier en server med mange WordPress nettsteder vert, kan dette redusere serverbelastningen.

Før du kommer inn i dette, sørg for at webverten lar deg sette opp standard Linux cron-jobber. Måten dette er oppsett vil være annerledes ut fra kontrollpanelet som tilbys av verten din, men i denne artikkelen vil jeg gi en veiledning for å sette opp en cron-jobb ved hjelp av cPanel-kontrollpanelet som er vanlig på Linux-servere i dag.

Trinnene jeg fulgte var:

  1. Deaktiver intern WP-Cron for å utføre på sidebelastning.
  2. Oppsett en cron-funksjon som gir en forespørsel til wp-cron.php-filen med jevne mellomrom basert på dine preferanser.

Ja, det er så enkelt. Bare to trinn for å få tingene til å kjøre jevnere.

MERK: Før du følger denne metoden, vær oppmerksom på at deaktivering av intern WP-Cron også kan føre til at nettsiden ikke kjører riktig, basert på oppsettet eller pluginene som brukes.

1. Deaktiver intern WP-Cron-funksjon

Åpne wp-config.php-filen i Notesblokk eller redigeringsprogrammet du ønsker, og legg til de to to linjene øverst.

 // Deaktiver intern Wp-Cron-funksjon definer ('DISABLE_WP_CRON', true);

Dette stopper nå den interne WP-Cron-funksjonen fra kjøring og vil ikke ringe til wp-cron.php-filen.

2. Sett opp en ekte cron-funksjon fra vertsens kontrollpanel

Hvis du har lov til å sette opp cron-jobber, må du sette opp en cron som nedenfor:

wget http://www.server.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1


Nedenfor finner du trinnene for å gjøre dette fra en cPanel-basert vert.

1. Åpne kontoens cPanel

Vanligvis er linken http://yourwebsite.com/cpanel eller http://yourwebsite.com:2082. Når du har angitt bruker-ID og passord og tast inn kontrollpanelet, bla ned til "Avanserte delen".

2. Gå til Cron Settings Page

Klikk på ikonet "Cron Jobs" i den avanserte delen.

3. Sett opp en Cron-jobb

På den nye siden finner du en "Legg til ny cron jobb" -del som den i bildet ovenfor. Fra rullegardinmenyen Vanlige innstillinger velger du "Hvert 5 minutter ...". Når du velger dette, fylles resten av feltene automatisk med den nødvendige informasjonen. I neste trinn vil jeg forklare min intensjon om å sette opp et 5 minutters intervall for å kjøre skriptet.

I kommandafeltet legger du til underlinjen. Husk å legge til riktig nettadresse.

wget http://www.yourwebsite.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1

Endelig klikker du på knappen "Legg til ny cron jobb".

Fra nå av vil serveren foreta en forespørsel om wp-cron.php-filen hvert 5. minutt. Nå er grunnen til at jeg har satt dette som 5 minutter, fordi jeg for det meste satt scriptet kjøringen til 4 minutter i stedet for 60 sekunder. Dette er gjort for å kunne laste inn store bildefiler, backupprosesser, etc. Du kan imidlertid også endre innstillingene og velge andre alternativer for å kjøre cron hvert 1. minutt.

MERK: Dette går bra for generelle WordPress-nettsteder. For de som bruker et WordPress-nettverk, kan det være nødvendig med flere ting, så vær så snill ikke bruk trinnene ovenfor hvis du kjører WordPress Multi-site versjon.


Konklusjon

Hvis du møter noen problemer eller har andre ideer, vennligst vær så snill å dele kommentarene dine nedenfor!