Verkkosivustot voivat suorittaa ajoitettuja tehtäviä Cronilla

kello

Meillä on töissä useita tarpeettomia seurantajärjestelmiä, jotka suorittavat säännöllisesti prosesseja. Jotkut juoksevat joka minuutti, toiset kerran yössä sen mukaan, mitä he tekevät. Saatamme esimerkiksi suorittaa komentosarjan, joka vie kaikki asiakkaat, jotka eivät ole tehneet ostosta 30 päivän kuluessa, lähettämään heille kuponin.

Sen sijaan, että yrität seurata kaikkia näitä käsin, on paljon helpompaa rakentaa automaattisesti ajoitettuja ja suoritettavia töitä. Unix-pohjaisissa järjestelmissä tämä saavutetaan Cronilla. Teille ihmisille, jotka tietävätte, mitä teette, kouluta minua ja lukijoita vapaasti, jos heitän väärää tietoa.

On valitettavaa, mutta tyypillinen web-kehittäjä ei tunne Cronia ollenkaan. Vaikka ne olisivatkin, web-hosting-yritykset eivät usein tarjoa pääsyä Cronille tai sen tukea. Isäntäni on yksi jälkimmäisistä - he sallivat sinun käyttää sitä, mutta 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 saaminen todella juoksemaan voi olla haastavaa, joten tässä olen oppinut ja miten tein sen Jos imee:

  1. Asensin komentosarjan Twitterin tarkistamiseksi 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 yllä olevaan # 2, Cron käyttää nerokasta mallia määrittäessään, milloin komentosarjat suoritetaan. Itse asiassa, voit itse kopioida ja liittää tämän Cronfile-tiedostoosi (isännässä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

Varmista, että asetit myös tämän tiedoston oikeudet suoritettavaksi! Huomasin, että syntaksit, käyttöoikeudet ja crontabin suorittaminen Terminal-ikkunasta olivat tärkeimmät tekijät. Joka kerta, kun tallensin tiedoston uudelleen, löysin myös käyttöoikeuteni!

PÄIVITÄ: Jos haluat varmistaa, että työt ovat käynnissä, yksi yksinkertainen tapa on päivittää tietokantakenttä komentosarjan viimeksi suoritetulla kerralla. 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.