Gall Gwefannau Rhedeg Tasgau Rhestredig gyda Cron

cloc

Mae gennym nifer o systemau monitro diangen yn y gwaith sy'n gweithredu prosesau'n rheolaidd. Mae rhai yn rhedeg bob munud, rhai unwaith y nos yn dibynnu ar yr hyn maen nhw'n ei wneud. Er enghraifft, efallai y byddwn yn gweithredu sgript sy'n allforio pob cwsmer nad ydyn nhw wedi prynu mewn 30 diwrnod i anfon cwpon atynt.

Yn hytrach na cheisio cadw golwg ar y rhain i gyd â llaw, mae'n llawer haws adeiladu swyddi sy'n cael eu hamserlennu a'u cyflawni'n awtomatig. Ar systemau sy'n seiliedig ar Unix, cyflawnir hyn gyda Cron. I chi bobl sy'n gwybod beth rydych chi'n ei wneud, mae croeso i chi fy addysgu i a'r darllenwyr os ydw i'n taflu unrhyw ddadffurfiad allan.

Mae'n anffodus, ond nid yw'r datblygwr gwe nodweddiadol yn gyfarwydd â Cron o gwbl. Hyd yn oed os ydyn nhw, yn aml nid yw cwmnïau cynnal gwe yn cyflenwi mynediad i, na chefnogaeth i, Cron. Mae fy ngwesteiwr yn un o'r olaf - maen nhw'n caniatáu ichi ei ddefnyddio, ond nid ydyn nhw'n ei gefnogi.

Beth yw Cron?

cron wedi ei enwi am y gair Groeg Chronos, sy'n golygu amser. Mae Cron yn rhedeg mewn dolen barhaus i redeg tasgau sy'n cael eu cronni gan Crontab (a enwir efallai tabulator. Cyfeirir at y tasgau hynny fel arfer fel Cronjobs, a gallant gyfeirio sgriptiau yn eich gwefan.

Esboniad Diagram Cron

Sut mae gosod y Crontab

Gall cael Cron i redeg mewn gwirionedd fod yn heriol, felly dyma beth ddysgais i a sut wnes i hynny Os Sugno:

  1. Sefydlais fy sgript i wirio Twitter's API i weld a oedd unrhyw un wedi ymateb @ifsuck. Cymharais y negeseuon hynny â'r negeseuon yr wyf eisoes wedi'u cadw ar y wefan, gan nodi unrhyw rai newydd.
  2. Ar ôl i'r sgript weithio, fe wnes i alluogi caniatâd i'r Defnyddiwr weithredu'r sgript (744) ac ychwanegu cyfeiriad y sgript at fy ffeil Cronjob - mwy ar hynny yn nes ymlaen.
  3. Yna roedd yn rhaid i mi fewngofnodi i'm gwefan trwy SSH. Ar Mac, cymerodd hynny Terfynell agoriadol a theipio SSH enw defnyddiwr@domain.com lle'r enw defnyddiwr oedd yr enw defnyddiwr yr oeddwn am ei ddefnyddio a pharth oedd y wefan. Yna cefais fy annog a rhoddais y cyfrinair.
  4. Yna ceisiais redeg y sgript yn uniongyrchol o'r gorchymyn yn brydlon trwy deipio'r enw ffeil a'r llwybr cymharol ar y gweinydd: /var/www/html/myscript.php
  5. Ar ôl i mi ei gael yn gweithio'n gywir, ychwanegais y cod Unix angenrheidiol yn llinell gyntaf y ffeil: #! / usr / bin / php -q . Rwy'n credu bod hyn yn syml yn dweud wrth Unix i ddefnyddio PHP i weithredu'r sgript.
  6. Wrth linell orchymyn y Terfynell, teipiais crontab (efallai y bydd angen i eraill deipio crontab -e) a tharo i mewn ... a dyna'r cyfan oedd ei angen!

Cystrawen ar gyfer eich Ffeil Cronjob

O ran # 2 uchod, mae Cron yn defnyddio cynllun dyfeisgar ar gyfer penderfynu pryd y bydd eich sgriptiau'n cael eu gweithredu. Mewn gwirionedd, gallwch chi gopïo a gludo hwn i'ch Cronfile (ar fy ngwesteiwr, mae wedi'i leoli yn / var / sbwlio / cron / gyda'r enw ffeil yr un peth â fy enw defnyddiwr).

# + —————- munud (0 - 59)
# | + ————- awr (0 - 23)
# | | + ———- diwrnod o'r mis (1 - 31)
# | | | + ——- mis (1 - 12)
# | | | | + —- diwrnod o'r wythnos (0 - 6) (dydd Sul = 0 neu 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Bydd yr uchod yn gweithredu fy sgript bob munud. Pe bawn i ddim ond eisiau iddo redeg unwaith yr awr, byddwn i ddim ond yn rhoi sawl munud ar ôl yr awr yr hoffwn iddo redeg, felly pe bai ar y marc 30 munud:

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

Gwnewch yn siŵr eich bod chi'n gosod y caniatâd i'r ffeil hon fel gweithredadwy hefyd! Canfûm mai cystrawen, caniatâd, a gweithredu crontab o ffenestr y Terfynell oedd y ffactorau pwysicaf. Bob tro y byddwn i'n ail-lunio'r ffeil, byddwn i'n gweld bod angen ailosod fy nghaniatâd hefyd!

DIWEDDARIAD: Os hoffech sicrhau bod y swyddi'n rhedeg, un ffordd yn syml yw diweddaru maes cronfa ddata gyda'r tro diwethaf i'r sgript gael ei rhedeg. Os yw'n fwy anaml, efallai y byddwch yn sgriptio e-bost a anfonir atoch chi'ch hun.

Adnoddau Cron Ychwanegol:

Faint o swyddi allech chi awtomeiddio gan ddefnyddio Cron?

8 Sylwadau

  1. 1

    Erthygl â gorchudd da ar sefydlu cron, i rywun sy'n newydd i crojobs, y rhan anoddaf wrth sefydlu cron yw cyfrifo'r cyfwng gweithredu cronjob, ac mae'n eithaf cymud cael egwyl anghywir ar y cynnig cyntaf. Os yw'ch cronjobs yn sensitif i amser, mae'n dda cynnwys rhai codau yn y sgript i adleisio statws fel eich bod yn cael gwybod am y statws cyflawni swydd.

  2. 2

    Helo Doug,

    Cwpwl o bethau i'w hystyried wrth weithio gyda swyddi cron.

    Yn gyntaf, ar ôl ychydig ddwsin, byddwch yn dymuno i chi gael UI, cronfa ddata a chystrawen Saesneg glish

    Yn ail, bydd cron yn tanio'r swydd ar yr amser penodedig, ni waeth a gwblhawyd y galw blaenorol am y swydd. Felly bydd rhedeg swydd unwaith y funud sy'n cymryd 2 funud yn arwain yn gyflym at redeg llawer o'r un swydd.

    Nesaf, nid oes unrhyw adrodd gwall wrth ymyl rhywbeth yn mynd o'i le, felly bydd angen i chi ychwanegu eich adroddiadau gwall eich hun.

    Rwyf wedi mynd i'r afael â'r rhain mewn dwy ffordd:
    - cael y cais wedi'i sbarduno trwy cron edrych mewn cronfa ddata i benderfynu beth sydd angen ei redeg. Ei redeg unwaith y funud neu'r awr yn dibynnu ar yr hyn rydych chi ei eisiau
    - a yw pob sgript yn creu ffeil 'cloi' yn / tmp ac os yw'n bodoli, peidiwch â dechrau eto, mae hyn yn atal swyddi dyblyg os nad ydych chi eu heisiau
    - os yw'r sgript yn canfod bod y ffeil glo yn hŷn nag 1 awr (neu beth bynnag sy'n awgrymu ichi farw) anfonwch rybudd e-bost
    - gofynnwch i'r sgript anfon e-bost ar fethiant y swydd fel eich bod chi'n gwybod bod rhywbeth wedi mynd o'i le
    - edrychwch ar fframweithiau fel Flux neu atodlenni masnachol pan fydd eich anghenion yn mynd y tu hwnt i ychydig o sgriptiau

    Chris

  3. 4

    Byddaf hefyd yn ychwanegu, ar y mwyafrif o systemau Linux / Unix, mai “crontab -e” yw'r hyn rydych chi'n ei ddefnyddio i olygu eich crontab. Rwy'n credu bod eich gwesteiwr (Jumpline) yn defnyddio fersiwn wedi'i haddasu am resymau diogelwch.

  4. 5

    Rwy'n dal i gofio'r diwrnod cyntaf i mi gwrdd â Cronnie. Roeddwn i wedi clywed pethau amdani, ei bod yn ddibynadwy, bob amser ar amser, ond weithiau ychydig yn ddryslyd ynghylch ei bwriadau.

    Gwelais fod hyn yn wir gan ei bod yn ddirgelwch llwyr imi ar y dechrau. Ar ôl holi o'i chwmpas, mi wnes i ddal ymlaen yn weddol gyflym ynglŷn â sut roedd hi'n hoffi gweithredu. Nawr, ni allaf ddychmygu diwrnod yn mynd heibio hebddi yn fy mywyd. Mae hi'n gwneud y cyffredin yn gyffrous, ac yn codi llawer o feichiau oddi ar fy ysgwyddau.

    Ymhob difrifoldeb, rwy'n teimlo fy mod i ddim ond wedi crafu'r wyneb â'r hyn y gallaf ei awtomeiddio gyda swyddi cron. Maent yn wirioneddol yn ffrind gorau datblygwyr. Os ydych chi'n defnyddio rhywun fel CPanel i reoli'ch gweinydd, mae'n darparu rhyngwyneb llawer mwy cyfeillgar i greu cronau. Cwblhewch gyda bwydlenni cwympo ar gyfer munud, awr, diwrnod, mis, ac ati sy'n adeiladu'r llinell cron i chi.

  5. 7

    Rwy'n bendant yn gweld bod hyn yn rhywbeth y dylai pob marchnatwr fod yn ei ddefnyddio ... A oes unrhyw un a all ddarparu'r gwasanaeth hwn oherwydd ei fod yn swnio ychydig yn rhy “techy”?

Beth ydych chi'n feddwl?

Mae'r wefan hon yn defnyddio Akismet i leihau sbam. Dysgwch sut mae eich data sylwadau yn cael ei brosesu.