Vefsíður geta keyrt áætluð verkefni með Cron

klukka

Við erum með fjölda óþarfa eftirlitskerfa við vinnu sem reglulega framkvæma ferli. Sumir hlaupa á hverri mínútu, aðrir einu sinni á nóttu eftir því hvað þeir eru að gera. Til dæmis gætum við framkvæmt handrit sem flytur út alla viðskiptavini sem ekki hafa keypt í 30 daga til að senda þeim afsláttarmiða.

Frekar en að reyna að halda utan um allt þetta með höndunum er miklu auðveldara að byggja upp störf sem eru sjálfkrafa skipulögð og framkvæmd. Í Unix-kerfum er þessu náð með Cron. Fyrir ykkur sem vitið hvað þið eruð að gera, ekki hika við að fræða mig og lesendurna ef ég hendi einhverri misupplýsingu.

Það er óheppilegt en hinn dæmigerði vefhönnuður þekkir alls ekki Cron. Jafnvel ef svo er, veita vefþjónustufyrirtæki oft ekki aðgang að eða stuðning við Cron. Gestgjafinn minn er einn af þeim síðarnefndu - þeir leyfa þér að nota það en þeir styðja það ekki.

Hvað er Cron?

cron er kennt við gríska orðið Chronos, sem þýðir tími. Cron keyrir í samfelldri lykkju til að keyra verkefni sem Crontab safnar (kannski kallað eftir flipiulator. Þessi verkefni eru venjulega nefnd Cronjobs og geta vísað til skrifta á vefsvæðinu þínu.

Skýring á Cron Diagram

Hvernig set ég upp Crontab

Að fá Cron til að hlaupa raunverulega getur verið krefjandi, svo hér er það sem ég lærði og hvernig ég gerði það fyrir Ef sjúga:

  1. Ég setti upp handritið mitt til að athuga Twitter API til að sjá hvort einhver hafi svarað @ifsuck. Ég líkti þessum skilaboðum saman við skilaboðin sem ég vistaði þegar á vefsíðunni og sló inn nýjum.
  2. Þegar handritið var að virka, virkjaði ég heimildir fyrir notandann til að framkvæma handritið (744) og bætti handritinu við Cronjob skrána mína - meira um það síðar.
  3. Ég þurfti síðan að skrá mig inn á vefsíðuna mína í gegnum SSH. Á Mac tók það að opna Terminal og slá inn SSH notandanafn@domain.com þar sem notendanafn var notendanafnið sem ég vildi nota og lén var vefsíðan. Ég var síðan beðinn um að gefa lykilorðið.
  4. Ég reyndi síðan að keyra handritið beint frá skipan hvetja með því að slá inn skráarheiti og hlutfallslega slóð á netþjóninum: /var/www/html/myscript.php
  5. Þegar ég fékk það til að virka rétt bætti ég við nauðsynlegum Unix kóða í fyrstu línu skjalsins: #! / usr / bin / php -q . Ég tel að þetta einfaldlega segir Unix að nota PHP til að framkvæma handritið.
  6. Við skipanalínu flugstöðvarinnar sló ég inn crontab (aðrir gætu þurft að skrifa crontab -e) og ýttu á enter ... og það var allt sem þurfti!

Setningafræði fyrir Cronjob skrána þína

Með tilliti til nr. 2 hér að ofan notar Cron snjallt kerfi til að ákvarða hvenær handritin þín verða framkvæmd. Reyndar er hægt að afrita og líma þetta í Cronfile (á gestgjafanum mínum, það er staðsett í / var / spool / cron / með skjalanafnið það sama og notendanafnið mitt).

# + —————- mínúta (0 - 59)
# | + ————- klukkustund (0 - 23)
# | | + ———- mánaðardagur (1 - 31)
# | | | + ——- mánuður (1 - 12)
# | | | | + —- vikudagur (0 - 6) (sunnudagur = 0 eða 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Ofangreint mun framkvæma handrit mitt á hverri mínútu. Ef ég vildi aðeins að það hlaupi einu sinni á klukkustund, myndi ég bara setja hversu margar mínútur eftir klukkutímann sem ég vildi að það myndi hlaupa, svo ef það var í 30 mínútna markinu:

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

Vertu viss um að þú stillir heimildirnar fyrir þessa skrá sem keyranlega líka! Mér fannst að setningafræði, heimildir og framkvæmd crontab frá Terminal glugganum væru mikilvægustu þættirnir. Í hvert skipti sem ég myndi endurheimta skrána myndi ég líka finna heimildir mínar sem þurfa að endurstilla!

UPPFÆRING: Ef þú vilt tryggja að störfin séu í gangi er ein einfaldlega leiðin til að uppfæra gagnasafn með síðast þegar handritið var keyrt. Ef það er sjaldgæfara, þá geturðu bara skrifað tölvupóst sem þú sendir þér.

Viðbótarupplýsingar um Cron:

Hversu mörg störf gætir þú sjálfvirkt með Cron?

8 Comments

  1. 1

    Vel fjallað grein um að setja upp cron, fyrir einhvern sem er nýr í crojobs, erfiðasti hlutinn við að setja upp cron er að reikna út cronjob-framkvæmdartímabilið, og það er mjög algengt að fá rangt bil í fyrstu tilraun. Ef cronjobs þínir eru tímaviðkvæmir er gott að hafa nokkrar kóðar í handritinu til að enduróma stöðuna svo að þú hafir verið upplýstur um stöðu framkvæmdar.

  2. 2

    Hæ Doug,

    Nokkur atriði sem þarf að huga að þegar unnið er með cron störf.

    Í fyrsta lagi, eftir nokkra tugi, vilt þú að þú hafir HÍ, gagnagrunn og setningafræði sem virðist á ensku 😉

    Í öðru lagi mun cron reka starfið á tilgreindum tíma, burtséð frá því hvort fyrri ákalli verksins var lokið. Svo að keyra starf einu sinni á mínútu sem tekur 2 mínútur mun fljótt leiða til þess að mikið af sama starfi er í gangi.

    Næst er næstum engin villuskýrsla þegar eitthvað fer úrskeiðis, svo þú þarft að bæta við þínum eigin villuskýrslum.

    Ég hef fjallað um þetta á nokkra vegu:
    - láta forritið vera virkjað með cron-útlit í gagnagrunni til að ákvarða hvað þarf að keyra. Keyrðu það einu sinni á mínútu eða klukkustund eftir því hvað þú vilt
    - láttu hvert handrit búa til 'læsa' skrá í / tmp og ef hún er til, ekki byrja aftur, þetta kemur í veg fyrir afrit af verkum ef þú vilt ekki hafa þau
    - ef handritið finnur læsingarskrána eldri en 1 klukkustund (eða hvað sem bendir til þess að þú hafir dáið) sendu tölvupóstsviðvörun
    - láttu handritið senda tölvupóst um bilun í starfinu svo þú veist að eitthvað fór úrskeiðis
    - skoðaðu ramma eins og Flux eða auglýsingatímaáætlun þegar þarfir þínar eru fleiri en nokkur smáforrit

    Chris

  3. 4

    Ég bæti líka við að á flestum Linux / Unix kerfum er „crontab -e“ það sem þú notar til að breyta crontab. Ég held að gestgjafinn þinn (Jumpline) sé að nota breytta útgáfu af öryggisástæðum.

  4. 5

    Ég man enn fyrsta daginn sem ég hitti Cronnie. Ég hafði heyrt hluti um hana, að hún væri áreiðanleg, alltaf á réttum tíma, en stundum svolítið ruglingsleg um fyrirætlanir sínar.

    Mér fannst þetta vera satt þar sem hún var mér fullkomin ráðgáta í fyrstu. Eftir að hafa spurt um hana náði ég nokkuð fljótt hvernig henni líkaði að starfa. Nú get ég ekki ímyndað mér að dagur líði án hennar í lífi mínu. Hún gerir hið hversdagslega spennandi og lyftir mörgum byrðum af herðum mínum.

    Í fullri alvöru líður mér eins og ég hafi aðeins rispað yfirborðið með því sem ég get sjálfvirkt með cron störfum. Þeir eru sannarlega besti vinur verktaki. Ef þú ert að nota einhvern eins og CPanel til að stjórna netþjóninum þínum þá veitir það mun vinalegra viðmót til að búa til crons. Lokið með fellivalmyndum í mínútu, klukkustund, dag, mánuð osfrv. Sem byggir upp cron línuna fyrir þig.

  5. 7

    Ég sé örugglega að þetta er eitthvað sem hver markaður ætti að nota ... Er einhver sem getur veitt þessa þjónustu vegna þess að hún hljómar aðeins of „tæknilega“?

Hvað finnst þér?

Þessi síða notar Akismet til að draga úr ruslpósti. Lærðu hvernig ummæli þín eru unnin.