Veebisaidid saavad ajakavas olevaid ülesandeid täita Croniga

kell

Meil on töös mitmeid üleliigseid seiresüsteeme, mis viivad protsesse regulaarselt ellu. Mõni jookseb iga minut, mõni kord öösel, sõltuvalt sellest, mida nad teevad. Näiteks võime käivitada skripti, mis ekspordib kupongi saatmiseks kõik kliendid, kes pole 30 päeva jooksul ostu sooritanud.

Selle asemel, et proovida neid kõiki käsitsi jälgida, on palju lihtsam luua automaatselt ajastatud ja täidetavaid töid. Unixi-põhistes süsteemides saavutatakse see Croniga. Teie jaoks, kes teate, mida teete, koolitage mind ja lugejaid julgelt, kui ma disinformatsiooni välja viskan.

On kahetsusväärne, kuid tüüpiline veebiarendaja pole Croniga üldse tuttav. Isegi kui nad seda teevad, ei paku veebimajutusettevõtted sageli juurdepääsu Cronile ega toeta seda. Minu host on üks viimastest - nad lubavad teil seda kasutada, kuid nad ei toeta seda.

Mis on Cron?

cron on nimetatud kreeka sõna Chronos, mis tähendab aeg. Cron töötab pidevas tsüklis, et käivitada Crontabi (võib-olla nimega tabhaavand. Neid ülesandeid nimetatakse tavaliselt Cronjobsiks ja need võivad viidata teie saidi skriptidele.

Croni skeemi selgitus

Kuidas seadistada Crontabi

Croni reaalseks jooksmiseks saamine võib olla keeruline, nii et siin on see, mida ma õppisin ja kuidas ma seda tegin Kui imeda:

  1. Twitteri kontrollimiseks seadistasin oma skripti API kas keegi on sellele vastanud @suhu. Võrdlesin neid sõnumeid juba veebisaidil salvestatud sõnumitega, sisestades kõik uued.
  2. Kui skript toimis, lubasin kasutajal skripti käivitamise õigused (744) ja lisasin skripti viite oma Cronjob-faili - sellest hiljem.
  3. Pidin siis SSH kaudu oma veebisaidile sisse logima. Macis kulus selleks Terminali avamine ja tippimine SSH kasutajanimi@domain.com kus kasutajanimi oli kasutajanimi, mida soovisin kasutada, ja domeen oli veebisait. Seejärel küsiti minult ja andsin parooli.
  4. Seejärel proovisin käivitada skripti otse käsuviibalt, tippides serveris failinime ja suhtelise tee: /var/www/html/myscript.php
  5. Kui sain selle õigesti tööle, lisasin faili esimesse ritta vajaliku Unixi koodi: #! / usr / bin / php -q . Usun, et see lihtsalt käsib Unixil skripti käivitamiseks kasutada PHP-d.
  6. Terminali käsureal tippisin crontab (teistel võib tekkida vajadus tippida crontab -e) ja vajuta Enter ... ja see oli kõik, mida vajati!

Teie Cronjob-faili süntaks

Seoses ülaltoodud # 2-ga kasutab Cron geniaalset skeemi, et määrata, millal teie skriptid käivitatakse. Tegelikult saate selle tegelikult oma Cronfile'i kopeerida ja kleepida (minu hostis asub see / var / spool / cron / failinimega sama mis minu kasutajanimi).

# + —————- minut (0 - 59)
# | +————- tund (0 - 23)
# | | +———- kuu päev (1 - 31)
# | | | + ——- kuu (1–12)
# | | | | + —- nädalapäev (0–6) (pühapäev = 0 või 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Ülaltoodu täidab minu skripti iga minut. Kui ma tahaksin, et see töötaks ainult üks kord tunnis, paneksin lihtsalt mitu minutit pärast tundi, kui soovin, et see jookseks, nii et kui see oleks 30-minutise tähise juures:

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

Kindlasti määrake ka selle faili õigused täidetavaks! Leidsin, et kõige olulisemad tegurid olid süntaks, õigused ja crontabi käivitamine terminali aknast. Iga kord, kui faili uuesti salvestasin, leidsin, et ka minu õigused vajavad lähtestamist!

UUENDAMINE: kui soovite tagada, et tööd töötaksid, on üks lihtne viis värskendada andmebaasivälja skripti viimase käitamise korral. Kui see on haruldasem, võite lihtsalt skriptida endale saadetud e-kirja.

Täiendavad Croni ressursid:

Mitu töökohta saaksite Croni abil automatiseerida?

8 Kommentaarid

  1. 1

    Hästi kajastatud artikkel krooni seadistamise kohta. Crojobs'i jaoks uue inimese jaoks on croni seadistamisel kõige keerulisem välja selgitada cronjob'i täitmise intervall ja üsna vale on esimesel katsel vale intervall saada. Kui teie cronjobid on ajaliselt tundlikud, on hea lisada skripti mõned koodid oleku kajastamiseks, et teid teavitataks töö täitmise olekust.

  2. 2

    Tere, Doug,

    Paar asja, mida tuleb cron-töödega arvestada.

    Esiteks sooviksite pärast mõnikümmend, et teil oleks kasutajaliides, andmebaas ja inglise välimusega süntaks 😉

    Teiseks vallandab cron töö kindlaksmääratud ajal, hoolimata sellest, kas töö eelmine kutsumine on lõpule viidud. Nii et ühe minuti jooksul ühe töö juhtimine, mis võtab 2 minutit, viib kiiresti sama töö käivitamiseni.

    Järgmisena pole veateateid, kui midagi valesti läheb, seega peate lisama oma veateate.

    Olen neid käsitlenud mitmel viisil:
    - laseb rakenduse käivitada croni kaudu andmebaasist, et teha kindlaks, mida tuleb käivitada. Käivitage see üks kord minutis või tunnis, sõltuvalt sellest, mida soovite
    - laske igal skriptil luua / tmp-s lukustusfail ja kui see on olemas, ärge alustage uuesti, see hoiab ära topelttööd, kui te neid ei soovi
    - kui skript leiab, et lukufail on vanem kui 1 tund (või mis iganes viitab sellele, et olete surnud), saatke meilisõnum
    - laske skriptil töö ebaõnnestumise korral meili saata, et teaksite, et midagi läks valesti
    - kui teie vajadused ületavad mõne skripti, vaadake raamistikke nagu Flux või kommertsgraafikuid

    Chris

  3. 4

    Lisan ka, et enamikus Linuxi / Unixi süsteemides on crontabi muutmiseks kasutatav “crontab -e”. Ma arvan, et teie host (Jumpline) kasutab turvalisuse huvides muudetud versiooni.

  4. 5

    Mäletan siiani esimest päeva, kui Cronnie'ga kohtusin. Ma olin kuulnud tema kohta asju, et ta oli usaldusväärne, alati õigel ajal, kuid mõnikord oma kavatsuste osas veidi segane.

    Leidsin, et see vastab tõele, kuna ta oli minu jaoks algul täielik mõistatus. Pärast tema kohta küsimist sain üsna kiiresti aru, kuidas talle meeldis opereerida. Nüüd ei kujuta ma ette ühtegi päeva möödumist ilma temata oma elus. Ta muudab argise põneva ja tõstab paljud koormad minu õlgadelt.

    Täiesti tõsiselt tunnen, et olen pinda kriimustanud ainult sellega, mida saan croni tööde puhul automatiseerida. Nad on tõepoolest arendajate parim sõber. Kui kasutate oma serveri haldamiseks kedagi nagu CPanel, pakub see palju sõbralikumat liidest, et luua kroone. Komplektis rippmenüüdega minut, tund, päev, kuu jne, mis loob teie jaoks joone.

  5. 7

    Ma kindlasti näen, et seda peaks iga turundaja kasutama ... Kas on keegi, kes suudaks seda teenust pakkuda, kuna see kõlab natuke liiga "tehniliselt"?

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.