Websides kinne plande taken útfiere mei Cron

klok

Wy hawwe in oantal oerstallige monitorsystemen oan it wurk dy't regelmjittich prosessen útfiere. Guon rinne elke minút, oaren ien kear de nacht ôfhinklik fan wat se dogge. Wy kinne bygelyks in skript útfiere dat alle klanten eksporteart dy't yn 30 dagen gjin oankeap hawwe dien om har in bon te stjoeren.

Yn stee fan besykje al dizze mei de hân by te hâlden, is it folle makliker om banen op te bouwen dy't automatysk wurde pland en útfierd. Op Unix-basearre systemen wurdt dit berikt mei Cron. Foar jo minsken dy't wite wat jo dogge, fiel jo frij om my en de lêzers op te learen as ik desinformaasje smyt.

It is spitich, mar de typyske webûntwikkelder is hielendal net bekend mei Cron. Sels as se binne, leverje webhostingbedriuwen faaks gjin tagong ta, as stipe fan, Cron. Myn host is ien fan 'e lêste - se litte jo it brûke, mar se stypje it net.

Wat is Cron?

Cron is neamd nei it Grykske wurd Chronos, wat betsjut tiid, Cron rint yn in trochgeande loop om taken út te fieren dy't wurde sammele troch Crontab (faaks neamd foar tabulator. Dy taken wurde typysk Cronjobs neamd, en kinne skripts ferwize op jo side.

Cron Diagram Taljochting

Hoe set ik de Crontab yn

Cron krije om eins te rinnen kin útdaagjend wêze, dus hjir is wat ik learde en hoe't ik it foar die As sûgje:

  1. Ik haw myn skript ynsteld om Twitter's te kontrolearjen API om te sjen oft immen antwurde hat @ifsuck, Ik fergelike dy berjochten mei de berjochten dy't ik al op 'e webside haw bewarre, en alle nije ynfierd.
  2. Sadree't it skript wurke, haw ik tagongsrjochten foar de brûker ynskeakele om it skript út te fieren (744) en foege de skriptsferwizing ta oan myn Cronjob-bestân - letter dêroer mear.
  3. Ik moast doe ynlogge op myn webside fia SSH. Op in Mac naam dat terminal te iepenjen en te typen SSH brûkersnamme@domein.com wêr't brûkersnamme de brûkersnamme wie dy't ik brûke woe en domein de webside wie. Ik waard doe frege en joech it wachtwurd.
  4. Ik besocht doe it skript direkt út te fieren fan 'e opdrachtprompt troch de bestânsnamme en relative paad op' e server te typen: /var/www/html/myscript.php
  5. Sadree't ik it goed krige, foege ik de nedige Unix-koade ta yn 'e earste rigel fan it bestân: #! / usr / bin / php -q , Ik leau dat dit Unix gewoan fertelt om PHP te brûken om it skript út te fieren.
  6. Op 'e Terminal-kommandoregel typte ik crontab (oaren moatte miskien typen crontab -e) en rekke enter ... en dat wie alles wat nedich wie!

Syntaksis foar jo Cronjob-bestân

Oangeande # 2 hjirboppe brûkt Cron in yngenieus skema om te bepalen wannear't jo skripts wurde útfierd. Eins kinne jo dit eins kopiearje en plakke yn jo Cronfile (op myn host leit it yn / var / spool / cron / mei de bestânsnamme itselde as myn brûkersnamme).

# + ——————- minút (0 - 59)
# | + ————- oere (0 - 23)
# | | + ———- dei fan de moanne (1 - 31)
# | | | + ——- moanne (1 - 12)
# | | | | + —- dei fan de wike (0 - 6) (Snein = 0 of 7)
# | | | | |
* * * * * /var/www/html/myscript.php

It boppesteande sil myn skript elke minút útfiere. As ik mar woe dat it ien kear yn 't oere draaide, soe ik gewoan hoefolle minuten nei it oere sette dat ik it woe rinne, dus as it op' e 30-minút wie:

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

Soargje derfoar dat jo de tagongsrjochten foar dit bestân ek ynstelle as útfierber! Ik fûn dat syntaksis, tagongsrjochten en útfieren fan crontab út it terminalfinster de wichtichste faktoaren wiene. Elke kear as ik it bestân opnij bewarje, soe ik myn tagongsrjochten ek weromsette moatte fine!

UPDATE: As jo ​​wolle soargje dat de banen draaie, is ien ienfâldige manier om in databankefjild by te wurkjen mei de lêste kear dat it skript waard útfierd. As it seldsumer is, kinne jo gewoan in e-post stjoere nei jo sels.

Oanfoljende Cron-boarnen:

Hoefolle banen koene jo automatisearje mei Cron?

8 Comments

  1. 1

    Goed behannele artikel oer it opsetten fan in cron, foar ien dy't nij is foar crojobs, is it lestichste diel by it opsetten fan in cron it útfieren fan it ynterval foar útfiering fan cronjob, en it is heul gewoan om in ferkearde ynterval te krijen by earste besykjen. As jo ​​cronjobs tiidgefoelig binne, is it goed om guon koades yn it skript op te nimmen om de status opnij te meitsjen, sadat jo op 'e hichte hâlden wurde fan' e taakútfieringstatus.

  2. 2

    Hoi Doug,

    In pear dingen dy't jo moatte beskôgje as jo wurkje mei cron-banen.

    Earst, nei in pear tsientallen, wolle jo winskje dat jo in UI, in database en Ingelsk-sichtbere syntaksis hawwe 😉

    Twad sil cron de baan ûntslaan op 'e oantsjutte tiid, ûnôfhinklik oft de foarige oanropping fan' e taak foltôge is. Dat ien kear yn 'e minút in taak útfiere dy't 2 minuten duorret, sil fluch liede ta in protte deselde taak dy't rint.

    Folgjende is d'r neist gjin flaterrapportaazje as der wat mis giet, dus jo moatte jo eigen flaterrapportaasje tafoegje.

    Ik haw dizze op in pear manieren oanpakt:
    - lit de applikaasje fia cron aktivearje yn in database om te bepalen wat moat wurde rinne. Rin it ien kear per minuut of oere út, ôfhinklik fan wat jo wolle
    - lit elk skript in 'lock'-bestân meitsje yn / tmp en as it bestiet, begjin net opnij, dit foarkomt duplikaat banen as jo se net wolle
    - as it skript it slotbestân fynt âlder dan 1 oere (of wat suggereart dat jo ferstoarn binne) stjoer dan in e-post alert
    - lit it skript e-post stjoere by mislearjen fan 'e baan, sadat jo witte dat der mis gie
    - sjoch nei kaders lykas Flux of kommersjele planners as jo behoeften fierder binne as in pear skripts

    chris

  3. 4

    Ik sil ek tafoegje dat "crontab -e" op de measte Linux / Unix-systemen is wat jo brûke om jo crontab te bewurkjen. Ik tink dat jo host (Jumpline) in wizige ferzje brûkt om feiligensredenen.

  4. 5

    Ik wit noch de earste dei dat ik Cronnie moete. Ik hie dingen oer har heard, dat se betrouber wie, altyd op tiid, mar soms in bytsje betiizjend oer har bedoelingen.

    Ik fûn dat dit wier wie, om't se my earst in folslein mystearje wie. Nei't ik om har oer frege hie, fong ik frij fluch op hoe't se graach opereare woe. No kin ik my net yntinke dat in dei yn har libben sûnder har foarby giet. Se makket it wrâldske spannend, en tilt in soad lêsten fan myn skouders.

    Yn alle earnst fiel ik my dat ik allinich it oerflak haw krast mei wat ik kin automatisearje mei cron-banen. Se binne wier de bêste freon fan 'e ûntwikkelders. As jo ​​ien lykas CPanel brûke om jo server te behearjen, biedt it in folle freonliker interface om crons te meitsjen. Kompleet mei dellûk menu's foar minuut, oere, dei, moanne, ensfh. Dy't de cronline foar jo bout.

  5. 7

Wat tinksto?

Dizze side brûkt Akismet om spam te ferleegjen. Learje hoe't jo kommentaargegevens ferwurke wurde.