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 käsitletud artikkel cron-i seadistamise kohta. Kellelegi, kes pole crojob-idega uustulnuk, on cron-i seadistamise kõige keerulisem osa cronjobi täitmisintervalli väljaselgitamine ja on üsna tavaline, et esimesel katsel saadakse vale intervall. Kui teie tööülesanded on ajatundlikud, on hea lisada skripti mõned koodid oleku kajamiseks, et teid töö täitmise olekuga kursis hoida.

  2. 2

    Tere Doug,

    Paar asja, mida croni töödega töötamisel arvestada.

    Esiteks, mõnekümne pärast soovite, et teil oleks kasutajaliides, andmebaas ja ingliskeelse välimusega süntaks 😉

    Teiseks vallandab cron töö määratud ajal, olenemata sellest, kas töö eelmine kutsumine lõpetati. Nii et kord minutis 2-minutilise töö tegemine viib kiiresti paljude sama töö tegemiseni.

    Järgmiseks pole veateadet peaaegu üldse võimalik, kui midagi läheb valesti, seega peate lisama oma veateate.

    Olen käsitlenud neid paaril viisil:
    – käivitada rakendus cron look’i kaudu andmebaasis, et teha kindlaks, mida tuleb käivitada. Käivitage seda üks kord minutis või tunnis, olenevalt sellest, mida soovite
    – laske igal skriptil luua /tmp-s lukufail ja kui see on olemas, ärge uuesti alustage, see hoiab ära töö dubleerimise, kui te neid ei soovi
    - kui skript leiab lukufaili, mis on vanem kui 1 tund (või mis iganes viitab teie surmale), saatke meilihoiatus
    – laske skriptil saata meilisõnum töö ebaõnnestumise kohta, et teaksite, et midagi läks valesti
    – vaadake raamistikke, nagu Flux või kommertsplaneerijad, kui teie vajadused ulatuvad mõnest skriptist kaugemale

    Chris

  3. 4

    Lisan ka, et enamikus Linuxi/Unixi süsteemides kasutatakse crontabi redigeerimiseks "crontab -e". Arvan, et teie host (Jumpline) kasutab turvakaalutlustel muudetud versiooni.

  4. 5

    Mäletan siiani esimest päeva, mil Cronniega kohtusin. Olin tema kohta kuulnud, et ta oli usaldusväärne, alati õigel ajal, kuid mõnikord oma kavatsuste osas pisut segane.

    Leidsin, et see on tõsi, kuna ta oli minu jaoks alguses täielik mõistatus. Pärast tema kohta küsimist sain üsna kiiresti aru, kuidas talle meeldis opereerida. Nüüd ei kujuta ma ette, et ükski päev mööduks mu elus ilma temata. Ta teeb igapäevase põnevaks ja tõstab mu õlgadelt palju koormaid.

    Täiesti tõsiselt, ma tunnen, et olen ainult pinda kriipinud sellega, mida saan cron-töödega automatiseerida. Nad on tõesti arendajate parim sõber. Kui kasutate oma serveri haldamiseks kedagi nagu CPanel, pakub see cronide loomiseks palju sõbralikumat liidest. Komplektis on minuti, tunni, päeva, kuu jne rippmenüüd, mis loovad teie jaoks cron-liini.

  5. 7

    Ma näen kindlasti, et seda peaks iga turundaja kasutama… Kas on kedagi, kes saaks 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.