Ajastetut tehtävät (crontab)

Ajastetut tehtävät mahdollistavat erilaisten palvelinpohjaisten scriptien ajamisen tiettyinä aikoina. Tietyt monimutkaiset palvelinsovellukset voivat vaatia ajastettujen tehtävien käyttöä ajastettaessa esimerkiksi kerran vuorokaudessa ajettavia toiminnallisuuksia (ohjelman lokitiedostojen tyhjentäminen, tilastojen päivittäminen tms.)

Ajastettuja tehtäviä ei suositella harrastelijoiden käytettäväksi. (Ja mikäli olet alasi ammattilainenkin, tehtäviä asetettaessa tulee noudattaa erityistä huolellisuutta.) Tästä johtuen ominaisuus ei kuulu vakiona webhotellipaketteihimme, vaan ennen kuin ajastettuja tehtäviä voidaan käyttää, ominaisuus on pyydettävä erikseen kytkettäväksi päälle asiakaspalvelustamme.

Huom!Ole erittäin huolellinen että ajastat ajastetut tehtävät oikein. Kerran vuorokaudessa ajettavaksi tarkoitettu ajastettu tehtävä voi kerran minuutissa ajettaessa aiheuttaa pahimmillaan koko palvelimen kaatumisen ja haittaa sadoille muille asiakkaille.

Ajastetut tehtävät asetetaan perinteisesti shell-yhteydellä käyttäen crontab-toimintoa. Nettihotellin asiakkaille tarjoamillamme chrooted-muotoisilla shell-yhteyksillä ei crontab-ajoja voi kuitenkaan hallita.

WebhotellivalikkoNettihotellin hallintapaneeli tarjoaa kuitenkin huomattavasti helppokäyttöisemmän tavan ajastettujen tehtävien asettamiseksi ja hallitsemiseksi. Mikäli tarvitset luoda ajastetun toiminnon, toimi seuraavasti:

  • Pyydä ensimmäiseksi ominaisuutta kytkettäväksi päälle asiakaspalvelustamme, mikäli et ole vielä niin tehnyt. Kun toiminnallisuus on kytketty käyttöön, jatka seuraavasti:Ajastetut tehtävät
  • Mikäli asiakkuuteesi kuuluu useampia saman pääkäyttäjätunnuksen alaisuudessa olevia webhotelleja, valitse ensin hallintapaneelin ylälaidan 'Valittuna' -alasvetovalikosta se webhotelli, jonka käyttäjätunnukselle haluat asettaa ajastetun tehtävän.
  • Valitse tämän jälkeen oikean ylälaidan valikosta 'Ajastetut tehtävät'. Sivulla näet listan ajastetuista tehtävistä, mikäli niitä on tunnuksellesi lisätty.
  • Luo uusi ajastettu tehtävä valitsemalla 'Lisää tehtävä', jonka jälkeen näet alapuolella kuvassa esitetyn näkymän.
  • Tarkista, että 'Tehtävä on voimassa' -kohta on ruksittuna
  • Voit valita ajastetun tehtävän tyypin kolmesta vaihtoehdosta: 'Suorita komento', 'Hae URL' tai 'Suorita PHP-komentosarja'. Tässä ohjeessa käydään läpi komentosarjaperusteisen ajastetun tehtävän luominen.

Tehtävien ajastaminen (crontab)

  • Täytä tämän jälkeen 'Suorita' -kenttään haluamasi ajastetun tehtävän suoritusajankohta. Kelloajaksi suosittelemme valitsemaan muun ajankohdan kuin tasan 00:00, jolloin palvelin voi olla normaalia ruuhkaisempi. 

Huom!Suosittelemme käyttämään minuutti-kentässä aina poikkeavaa, satunnaista minuuttilukemaa, esimerkiksi 24 tai 53 jotta ajoja ei suoriteta samaan aikaan joka tunti jokaisen palvelimen crontab-käyttäjän kesken, sillä tämä voi aiheuttaa hidasteluja palvelimelle mainitulla minuuttilukemalla.

Itse komennon syöttäminen tapahtuu kenttään "Komento". Voit ajaa esimerkiksi haluamasi php-scriptin, joka tekee haluamasi toimenpiteen palvelimella (esimerkiksi poistaa turhia tiedostoja tms.) Komennon ajamiseksi tulee käyttää palvelimella olevaa wget-sovellusta, jolla haluttu sivu ladataan. Komentoriville syötetään täten esimerkiksi komento:

  wget -q --spider http://www.omadomain.fi/ajettavacron.php

Turvallisuussyistä komentorivin ajava scripti tulisi ainakin piilottaa hyvin hakemistoon, joka ei ole julkisesti tiedossa (esimerkiksi wget -q --spider http://www.omadomain.fi/asd83ks3ie/ajettavacron.php) tai vielä suositeltavammin komennon ajamiseksi scriptissä olisi hyvä olla jonkinlainen salasanasuojaus, jossa salasana välittyy komennon mukana ja jonka php-sovellus tarkistaa ennen scriptin toimien tekemistä (esimerkiksi wget -q --spider http://www.omadomain.fi/ajettavacron.php?password=asd83ks3ie). Tällä vältytään siltä, että asiattomat tahot eivät pääse käsiksi ajettavaan scriptiin ja ajamaan sitä milloin tahansa esimerkiksi selaimen kautta.

Cronin kautta on mahdollista ajaa myös palvelimen binäärejä, joiden tiedostonhallinta tapahtuu omalla FTP-käyttäjällä - esimerkiksi Magento-kaupan sessiotiedostojen poistaminen on mahdollista seuraavalla komennolla:

rm -f /var/www/vhosts/domainisi.tld/httpdocs/kaupanhakemisto/var/session/*

Tarkista vielä lopuksi asettamasi ajastetun tehtävän toiminta ja että scriptisi ajautuu haluttuna ajankohtana kuten pitääkin.

Tehtävän suorittamisen ilmoitusviesti

Crontab-ajoille on tyypillistä, että suoritetusta tehtävästä lähtee viesti asiakkaalle suorituksen yhteydessä. Voit halutessasi määrittää tämän tehtävänantosivun alalaidassa kohdassa 'Ilmoitukset lähetetään'. Valitse vaihtoehdoista sopivin oletusvastaanottaja tai syötä sähköpostiosoite ja viestit saapuvat siihen. Voit vaihtoehtoisesti myös kytkeä viestit pois muokkaamalla ajettavan komennon loppuun tekstin > /dev/null 2>&1 - esim:

wget -q --spider http://www.omadomain.fi/ajettavacron.php > /dev/null 2>&1

Testaa crontab-ajon toiminta myös tämän muutoksen jälkeen, jotta voit todeta, että scriptisi ajautuu siitä huolimatta, ettei ilmoitusviestejä lähetetä.

Takaisin Lue lisää