Verkkosivustot voivat suorittaa ajoitettuja tehtäviä Cronilla

kello

Meillä on töissä useita tarpeettomia seurantajärjestelmiä, jotka suorittavat prosesseja säännöllisesti. Jotkut juoksevat joka minuutti, toiset kerran yöllä sen mukaan, mitä he tekevät. Voimme esimerkiksi suorittaa komentosarjan, joka vie kupongin kaikille asiakkaille, jotka eivät ole tehneet ostoksia 30 päivään.

Sen sijaan, että yrittäisi seurata näitä kaikkia käsin, on paljon helpompaa luoda automaattisesti ajoitetut ja suoritettavat työt. Unix-pohjaisissa järjestelmissä tämä saavutetaan Cronin avulla. Te ihmiset, jotka tiedätte mitä teette, voitte kouluttaa minua ja lukijoita, jos heitän väärää tietoa.

Se on valitettavaa, mutta tyypillinen web -kehittäjä ei tunne Cronia ollenkaan. Vaikka ne olisivatkin, web -hosting -yritykset eivät useinkaan tarjoa pääsyä tai tukea Croniin. Isäntäni on yksi jälkimmäisistä - he voivat käyttää sitä, mutta he eivät tue sitä.

Mikä on Cron?

cron on nimetty kreikkalaiselle sanalle Chronos, joka tarkoittaa aika. Cron toimii jatkuvassa silmukassa Crontabin (kenties nimetty) tehtävien suorittamiseksi kielekeulator. Näitä tehtäviä kutsutaan yleensä Cronjobsiksi, ja ne voivat viitata sivustosi skripteihin.

Cron-kaavion selitys

Kuinka määritän Crontabin

Cronin suorittaminen todella voi olla haastavaa, joten tässä on mitä opin ja miten tein sen Jos imee:

  1. Asetin komentosarjan tarkistamaan Twitterin API onko kukaan vastannut @ifsuck. Vertailin näitä viestejä jo tallennettuihin viesteihin verkkosivustolleni ja annoin uusia.
  2. Kun komentosarja toimi, otin käyttäjän oikeudet suorittaa komentosarja (744) ja lisäsin komentoviittauksen Cronjob-tiedostooni - lisätietoja siitä myöhemmin.
  3. Sitten minun piti kirjautua verkkosivustolleni SSH: n kautta. Macissa tämä avasi Terminalin ja kirjoitti SSH käyttäjätunnus@verkkotunnus.com missä käyttäjätunnus oli käyttäjänimi, jota halusin käyttää, ja verkkotunnus oli verkkosivusto. Sitten minulta kysyttiin ja annoin salasanan.
  4. Sitten yritin suorittaa komentosarjan suoraan komentokehotteesta kirjoittamalla tiedostonimi ja suhteellinen polku palvelimelle: /var/www/html/myscript.php
  5. Kun sain sen toimimaan oikein, lisäsin tarvittavan Unix-koodin tiedoston ensimmäiselle riville: #! / usr / bin / php -q . Uskon, että tämä yksinkertaisesti kehottaa Unixia käyttämään PHP: tä komentosarjan suorittamiseen.
  6. Kirjoitin Terminal-komentorivillä crontab (toisten on ehkä kirjoitettava crontab -e) ja paina Enter ... ja se oli kaikki mitä tarvittiin!

Syntaksi Cronjob-tiedostollesi

Mitä tulee edellä olevaan numeroon 2, Cron käyttää nerokasta kaavaa skriptien suorittamisen määrittämiseen. Itse asiassa voit itse kopioida ja liittää tämän Cronfile -tiedostoosi (isäntäni, se sijaitsee / var / kela / cron / tiedostonimellä sama kuin käyttäjänimelläni).

# + —————- minuutti (0-59)
# | +————- tunti (0-23)
# | | +———- kuukauden päivä (1-31)
# | | | +——- kuukausi (1-12)
# | | | | +—- viikonpäivä (0-6) (sunnuntai = 0 tai 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Edellä mainittu suorittaa komentosarjan joka minuutti. Jos halusin sen juoksevan vain kerran tunnissa, laitoin vain kuinka monta minuuttia tunnin jälkeen haluan sen kuluvan, joten jos se olisi 30 minuutin kohdalla:

30 * * * * /var/www/html/myscript.php

Muista myös asettaa tämän tiedoston käyttöoikeudet suoritettavaksi! Huomasin, että syntaksi, käyttöoikeudet ja crontabin suorittaminen pääteikkunasta olivat tärkeimmät tekijät. Aina kun tallensin tiedoston uudelleen, huomasin, että myös käyttöoikeuteni on palautettava!

PÄIVITTÄMINEN: Jos haluat varmistaa, että työt ovat käynnissä, yksi yksinkertainen tapa on päivittää tietokantakenttä viimeisellä komentosarjan suorituskerralla. Jos se on harvinaisempaa, voit vain kirjoittaa itsellesi lähetetyn sähköpostin.

Muut Cron-resurssit:

Kuinka monta työpaikkaa voisit automatisoida hyödyntämällä Cronia?

8 Kommentit

  1. 1

    Hyvin katettu artikkeli cronin asettamisesta, jokaiselle, joka on uusi crojobsille, vaikein osa cronin asettamisessa on selvittää cronjob-suoritusväli, ja on melko hankalaa saada väärä väli ensimmäisellä yrityksellä. Jos cronjobit ovat aikaherkkiä, on hyvä sisällyttää komentosarjaan joitain koodeja kaikuakseen tilaa, jotta sinulle ilmoitetaan työn suorittamisen tilasta.

  2. 2

    Hei Doug,

    Pari asiaa, jotka on otettava huomioon työskenneltäessä cron-töiden parissa.

    Ensinnäkin, muutaman kymmenen kuluttua, haluat, että sinulla olisi käyttöliittymä, tietokanta ja englanninkielinen syntaksia 😉

    Toiseksi cron ampuu työn määritettynä aikana riippumatta siitä, onko työn edellinen kutsuminen saatu päätökseen. Joten työn suorittaminen kerran minuutissa, joka kestää 2 minuuttia, johtaa nopeasti saman työn suorittamiseen.

    Seuraavaksi virheilmoituksia ei ole, kun jokin menee pieleen, joten sinun on lisättävä oma virheraportointi.

    Olen käsitellyt näitä muutamalla tavalla:
    - Pyydä cron-välityksellä käynnistettyä sovellusta etsimään tietokannasta sen määrittämiseksi, mikä on suoritettava. Suorita se kerran minuutissa tai tunnissa haluamasi mukaan
    - Pyydä jokaista komentosarjaa luomaan 'lock' -tiedosto kansioon / tmp, ja jos sellainen on, älä aloita uudelleen, tämä estää päällekkäisiä töitä, jos et halua niitä
    - Jos komentosarja löytää yli 1 tunnin vanhan lukitustiedoston (tai mikä tahansa ehdottaa sinun kuolemaan), lähetä sähköpostihälytys
    - Pyydä komentosarjaa lähettämään sähköpostia työn epäonnistuttua, jotta tiedät, että jokin meni pieleen
    - Katso kehyksiä, kuten Flux tai kaupallisia ajastimia, kun tarpeesi ylittävät muutaman komentosarjan

    chris

  3. 4

    Lisään myös, että useimmissa Linux / Unix-järjestelmissä "crontab -e" on se, jota käytät muokkaamaan crontab-tiedostoa. Luulen, että isäntäsi (Jumpline) käyttää muokattua versiota turvallisuussyistä.

  4. 5

    Muistan edelleen ensimmäisen päivän, kun tapasin Cronnie. Olin kuullut hänestä asioita, että hän oli luotettava, aina ajoissa, mutta joskus hieman hämmentävä aikomuksistaan.

    Minusta tämä oli totta, koska hän oli minulle aluksi täydellinen mysteeri. Kun kysyin hänestä, sain melko nopeasti kiinni siitä, kuinka hän halusi toimia. En voi kuvitella päivän kulumista ilman häntä elämässäni. Hän tekee arkipäivästä jännittävän ja nostaa monia taakkoja harteiltani.

    Kaiken vakavasti minusta tuntuu siltä, ​​että olen vain naarmuuntunut pintaan sillä, mitä voin automatisoida cron-töillä. He ovat todella kehittäjien paras ystävä. Jos käytät palvelimen hallintaan CPanelin kaltaista henkilöä, se tarjoaa paljon ystävällisemmän käyttöliittymän luoda cronteja. Mukana pudotusvalikot minuutille, tunnille, päivälle, kuukaudelle jne., Jotka rakentavat cron-linjan sinulle.

  5. 7

    Olen ehdottomasti sitä mieltä, että jokaisen markkinoijan tulisi käyttää tätä ... Onko ketään, joka voi tarjota tätä palvelua, koska se kuulostaa hieman liian "tekniseltä"?

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.