@harrasteblogi JUURI NYT
--:--

Tilaa uutiskirje

Saat tuoreimmat artikkelit sähköpostiisi.

Etusivu / Artikkeleita / WordPressin WP-Cron: näin ajastetut tehtävät toimivat

WordPressin WP-Cron: näin ajastetut tehtävät toimivat

WordPress
Tiivistelmä

WordPress tekee taustalla paljon sellaista, mitä sivuston ylläpitäjä ei huomaa päivittäisessä käytössä. Ajastettu artikkeli odottaa julkaisuaan, päivitysten saatavuutta tarkistetaan ja lisäosat suorittavat omia…

f x w
WordPressin WP-Cron: näin ajastetut tehtävät toimivat

WordPress tekee taustalla paljon sellaista, mitä sivuston ylläpitäjä ei huomaa päivittäisessä käytössä. Ajastettu artikkeli odottaa julkaisuaan, päivitysten saatavuutta tarkistetaan ja lisäosat suorittavat omia ylläpitotehtäviään. Monien näiden toimintojen ajoittamisesta vastaa WP-Cron.

Useimmiten ajastuksia ei tarvitse käsitellä itse. Niiden toimintaperiaate kannattaa silti tuntea, sillä viivästynyt julkaisu tai puuttuva varmuuskopio voi liittyä juuri tehtävien käynnistymiseen.

WP-Cronin ymmärtäminen auttaa erottamaan toisistaan ajastusongelman ja tilanteen, jossa tehtävä kyllä käynnistyy mutta epäonnistuu suorittamisen aikana. Näiden korjaamiseen tarvitaan erilaiset toimenpiteet.

Mikä WP-Cron on?

WP-Cron on WordPressin ajastettujen tehtävien järjestelmä. Sen avulla WordPress ja lisäosat voivat määrittää toimintoja suoritettavaksi myöhemmin.

Tehtävä voi olla kertaluonteinen, kuten tietyn artikkelin julkaiseminen, tai säännöllisesti toistuva. WordPress käyttää järjestelmää esimerkiksi ajastettuihin julkaisuihin ja päivitysten tarkistamiseen.

Oletustilanteessa tehtävien tarkistaminen käynnistyy WordPressiin saapuvien sivupyyntöjen yhteydessä. WP-Cron ei siis ole jatkuvasti taustalla käyvä prosessi, joka tarkistaisi kellonajan itsenäisesti. Tämä ero selittää monia ajastusten viivästymisiä. WordPressin WP-Cron-kuvaus

Sivuston ylläpitäjälle olennainen kysymys on, saavatko tehtävät riittävän usein mahdollisuuden käynnistyä ja riittävätkö palvelimen resurssit niiden suorittamiseen.

Miksi tehtävä ei aina käynnisty täsmälleen ajallaan?

Kuvitellaan, että ajastat artikkelin julkaistavaksi aamulla kello kahdeksan. Sivustolla ei kuitenkaan käy ketään ennen puoli yhdeksää.

Jos käytössä on tavallinen käynteihin perustuva WP-Cron eikä mikään muu käynnistä sitä, julkaisu voi viivästyä seuraavaan sopivaan pyyntöön asti. Ajastettu kellonaika kertoo, milloin tehtävä on valmis suoritettavaksi, mutta ei yksin takaa suorittamisen alkamista juuri sillä hetkellä. WP-Cronin käynnistymisperiaate

Pienessä harrasteblogissa lyhyt viive voi olla merkityksetön. Kampanjan julkaisussa tai ajastetussa tiedonsiirrossa sillä voi olla käytännön vaikutuksia.

Määrittele siksi ensin, kuinka tarkkaa ajoitusta todella tarvitset. Kaikki taustatyöt eivät edellytä minuutintarkkaa käynnistymistä.

Millaisia tehtäviä lisäosat voivat ajastaa?

Lisäosat voivat käyttää ajastuksia omiin toimintoihinsa. Toteutuksesta riippuen tehtävät voivat liittyä esimerkiksi:

  • Varmuuskopioiden muodostamiseen.
  • Vanhentuneiden väliaikaistietojen siivoamiseen.
  • Tuote- tai varastotietojen synkronointiin.
  • Raporttien kokoamiseen.
  • Jonossa olevien viestien käsittelyyn.
  • Ulkoisista palveluista haettavien tietojen päivittämiseen.

Kaikki automaattinen toiminta ei kuitenkaan kulje suoraan WP-Cronin kautta. Lisäosalla voi olla oma tehtäväjononsa, ja palveluntarjoajan varmuuskopiointi voi toimia WordPressistä kokonaan erillään.

Kun jokin toiminto epäonnistuu, selvitä ensin sen toteutustapa. Esimerkiksi uutiskirjeen lähetysongelmaa ei kannata ryhtyä korjaamaan WordPressin ajastuksista, jos lähetyksen hoitaa itsenäinen ulkoinen palvelu.

Ymmärrä kertaluonteisen ja toistuvan tehtävän ero

Kertaluonteinen tehtävä määritetään suoritettavaksi tiettynä ajankohtana. Toistuvalla tehtävällä on aloitusajan lisäksi toistoväli.

WordPressin toistuva ajastus perustuu aikaväleihin. Esimerkiksi tunnin välein suoritettava tehtävä ei automaattisesti tarkoita jokaista tasatuntia. Aloitushetki vaikuttaa suunniteltuun rytmiin. Lisäosat voivat määrittää myös omia toistovälejään. WordPressin ajastusperiaatteet

Tällä on merkitystä asetuksia tulkittaessa. ”Päivittäin” voi tarkoittaa määräajoin toistuvaa tehtävää, kun taas lisäosan erillinen kellonaikavalinta voi toteuttaa tarkemman aikataulun.

Tarkista lisäksi sivuston aikavyöhyke, jos julkaisuajat näyttävät vääriltä. Suomessa kaupunkipohjainen Helsinki-aikavyöhyke huomioi kesä- ja talviajan. Kiinteä UTC-poikkeama ei muutu vuodenaikojen mukana.

Mistä ajastusongelman voi tunnistaa?

Yksittäinen myöhästynyt tehtävä ei vielä todista koko ajastusjärjestelmän rikkoutuneen. Tarkkaile, koskeeko ongelma yhtä toimintoa vai useita toisistaan riippumattomia tehtäviä.

Mahdollisia oireita ovat:

  • Ajastettu artikkeli jää julkaisematta.
  • Lisäosan viimeisin onnistunut suoritus on odotettua vanhempi.
  • Tehtäväjonoon kertyy jatkuvasti odottavia tapahtumia.
  • Automaattinen toiminto onnistuu vain käsin käynnistettynä.
  • Useat taustatehtävät alkavat viivästyä samanaikaisesti.

Kirjaa odotettu suoritusaika, havaittu lopputulos ja mahdollinen virheilmoitus. Näistä tiedoista on apua sekä omassa tutkimisessa että palveluntarjoajan kanssa asioidessa.

Varmuuskopioinnissa tarkista valmis kopio. Viestien lähetyksessä varmista vastaanotto. Tehtävän käynnistyminen ei vielä osoita, että tavoiteltu työ valmistui.

Aloita tarkistaminen sivuston kunnosta

WordPressin Työkalut → Sivuston kunto tarjoaa lähtökohdan teknisten ongelmien selvittämiseen. Näkymässä voi olla ilmoituksia ajastetuista tapahtumista, taustapäivityksistä tai palvelimen takaisin sivustolle tekemistä yhteyksistä. Sivuston kunto -toiminnon ohje

Lue ilmoituksen sisältö ennen asetusten muuttamista. Palvelimen yhteysongelma ja yksittäisen lisäosan virhe eivät välttämättä ratkea samalla tavalla.

Tarkista seuraavaksi kyseisen lisäosan oma tapahtuma- tai virheloki, jos sellainen on käytettävissä. Vertaa ongelman alkamisajankohtaa tehtyihin muutoksiin.

Hyödyllisiä havaintoja voivat olla juuri tehty palvelinsiirto, uusi suojausasetus tai lisäosan päivitys. Ajallinen yhteys auttaa rajaamaan tutkimusta, vaikka se ei yksin todista syytä.

Huomioi välimuisti ja palvelimen rajoitukset

Sivuston kävijämäärä ei suoraan kerro, kuinka usein WordPress pääsee käsittelemään pyyntöjä. Jos valmis sivu toimitetaan välimuistista ennen WordPressin käynnistymistä, kyseinen käynti ei välttämättä käynnistä ajastusten tarkistamista.

Myös palvelimen rajoitukset voivat vaikuttaa toimintaan. Tehtävä saattaa keskeytyä muistirajaan, pitkään suoritusaikaan tai ulkoisen palvelun hitaaseen vastaukseen.

Erottele tutkimuksessa kolme vaihetta:

  1. Onko tehtävä ajastettu oikein?
  2. Käynnistyykö ajettavien tehtävien käsittely?
  3. Valmistuuko varsinainen toiminto onnistuneesti?

Älä poista välimuistia tai suojausta kokonaan ensimmäisenä korjauskeinona. Selvitä mieluummin, estyykö jokin tietty pyyntö tai toiminto, ja rajaa muutos siihen.

Milloin palvelimen ajastus on hyödyllinen?

Palvelimen oma ajastus voi käynnistää WordPressin tehtävien käsittelyn säännöllisesti riippumatta kävijöistä. Se on hyödyllinen erityisesti vähäliikenteisellä sivustolla tai silloin, kun taustatöiden ennustettavuus on tärkeää.

Palvelinajastus voidaan määrittää kutsumaan WordPressin wp-cron.php-tiedostoa. Tämän jälkeen käynteihin perustuva automaattinen käynnistäminen voidaan poistaa käytöstä. WordPressin palvelinajastuksen ohje

Valitse suoritusväli tehtävien tarpeen ja palvelinympäristön mukaan. Viiden minuutin välein tapahtuva tarkistus voi riittää monelle sivustolle, mutta sekään ei tarkoita täsmällistä toteutusta jokaisella halutulla minuutilla.

Säännöllinen käynnistäminen ei myöskään korjaa rikkinäistä tehtäväkoodia. Jos työ epäonnistuu joka kerta samassa kohdassa, sen varsinainen aiheuttaja pitää selvittää erikseen.

Vaihda käynnistystapaa oikeassa järjestyksessä

Selvitä ensin, hoitaako palveluntarjoaja ajastuksen jo valmiiksi. Päällekkäistä järjestelyä ei kannata rakentaa tietämättä nykyistä toteutusta.

Kun korvaava palvelinajastus on asetettu ja testattu, WordPressin käynteihin perustuva käynnistäminen voidaan estää wp-config.php-tiedoston asetuksella:

define( 'DISABLE_WP_CRON', true );

Asetus ei poista tallennettuja tehtäviä. Se muuttaa niiden automaattista käynnistymistä, joten korvaavan toteutuksen täytyy toimia. Lisää määrittely ennen WordPressin lataavaa osuutta äläkä määrittele samaa vakiota kahdesti. Palvelinajastuksen käyttöönotto

Ota tiedostosta kopio ennen muokkaamista. Jos et hallitse palvelinasetuksia, pyydä palveluntarjoajaa toteuttamaan muutos ja vahvistamaan onnistunut suoritus.

Suorita tehtäviä käsin vain harkitusti

Kehittäjä voi tarvittaessa käynnistää erääntyneet tapahtumat WP-CLI-komentorivityökalulla:

wp cron event run --due-now

Komento suorittaa parhaillaan erääntyneet cron-tapahtumat. Sitä käytetään oikean WordPress-asennuksen ympäristössä, ja palvelimella täytyy olla WP-CLI käytettävissä. WP-CLI-komennon kuvaus

Ennen suorittamista pitää ymmärtää, mitä odottavat tehtävät tekevät. Jonossa voi olla sähköpostien lähetyksiä, tietojen synkronointia tai muita oikeaan toimintaan vaikuttavia töitä.

Onnistunut käsiajo kertoo tilanteesta vain osan. Se ei todista, että automaattinen ajastus toimii seuraavalla kerralla.

Seuraa lopputulosta muutoksen jälkeen

Kokeile korjauksen jälkeen yhtä hallittua, helposti tarkistettavaa tehtävää. Seuraa sen suunniteltua aikaa ja todellista valmistumista.

Tarkista samalla, vähenevätkö vanhentuneet tapahtumat ja pysyykö palvelimen kuormitus kohtuullisena. Jos tehtäviä kertyy nopeammin kuin niitä valmistuu, tarvitaan lisätutkimusta.

Dokumentoi käytössä oleva käynnistystapa, suoritusväli ja vastuuhenkilö. Lisää ajastusten tarkistus myös palvelinsiirron jälkeiseen testilistaan.

Näin ylläpitäjä tietää myöhemminkin, mikä järjestelmä käynnistää tehtävät ja mistä niiden onnistuminen voidaan varmistaa.

Liittyvät kategoriat

🤖 AI-sinetti: tämän artikkelin viimeistelyssä on käytetty tekoälyavusteisia työkaluja.