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, guon ien kear per 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 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 dat binne, leverje webhostingbedriuwen faak 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?

chron 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 @efkes, 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 as útfierber ynstelle! Ik fûn dat syntaksis, tagongsrjochten en útfieren fan crontab út it finster Terminal de wichtichste faktoaren wiene. Elke kear as ik it bestân opnij bewarje, soe ik myn tagongsrjochten ek werstelle moatte!

UPDATE: As jo ​​wolle soargje dat de banen rinne, is ien ienfâldige manier om in databankefjild by te wurkjen mei de lêste kear dat it skript waard útfierd. As it minder faak 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 bedutsen artikel oer it opsetten fan in cron, foar ien dy't nij is foar crojobs, is it dreechste diel by it opsetten fan in cron om it cronjob-útfierinterval út te finen, en it is heul gewoan om in ferkeard ynterval te krijen by de earste poging. As jo ​​cronjobs binne tiid gefoelich, it is goed om te nimmen guon koades yn it skript foar echo out status, sadat jo wurde hâlden ynformearre fan de taak útfiering status.

  2. 2

    hoi Doug,

    In pear dingen om te beskôgje as jo wurkje mei cron-banen.

    Earst, nei in pear tsientallen, winskje jo dat jo in UI, in databank en in Ingelsk-looking syntaksis hiene 😉

    Twads sil cron de baan op 'e opjûne tiid ûntslaan, nettsjinsteande oft de foarige oprop fan' e baan foltôge is. Dus ien kear yn 'e minút in baan útfiere dy't 2 minuten duorret sil gau liede ta in protte deselde baan dy't rint.

    Dêrnei is d'r neist gjin flaterrapportaazje as der wat mis giet, dus jo moatte jo eigen flaterrapportaazje tafoegje.

    Ik haw dizze op in pear manieren oanpakt:
    - lit de applikaasje trigger wurde fia cron sjoch yn in database om te bepalen wat moat wurde útfierd. Run it ien kear yn 'e minút of oere ôfhinklik fan wat jo wolle
    - lit elk skript in 'lock'-bestân meitsje yn /tmp en as it bestiet, start dan net opnij, dit foarkomt dûbele banen as jo se net wolle
    - as it skript it beskoattelbestân âlder fynt as 1 oere (of wat suggerearret dat jo stoarn binne), stjoer dan in e-postwarskôging
    - lit it skript e-post stjoere by mislearjen fan 'e baan, sadat jo witte dat der mis gie
    - sjoch nei kaders lykas Flux as kommersjele planners as jo behoeften boppe in pear skripts komme

    chris

  3. 4

    Ik sil ek tafoegje dat op de measte Linux / Unix-systemen "crontab -e" is wat jo brûke om jo crontab te bewurkjen. Ik tink dat jo host (Jumpline) in wizige ferzje brûkt foar 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 'e tiid, mar soms wat betiizjend oer har bedoelingen.

    Ik fûn dat dit wier wie, om't se earst in folslein mystearje foar my wie. Nei't ik om har hinne frege hie, fûn ik frij gau hoe't se graach operearje woe. No kin ik my net yntinke dat in dei sûnder har yn myn libben giet. Se makket de wrâld spannend, en tilt in protte lêst fan myn skouders.

    Yn alle earnst fiel ik dat ik allinich it oerflak haw bekrast mei wat ik kin automatisearje mei cron-banen. Se binne wirklik in bêste freon fan ûntwikkelders. As jo ​​​​ien as CPanel brûke om jo server te behearjen, leveret it in folle freonliker interface om crons te meitsjen. Kompleet mei dellûkmenu's foar minút, oere, dei, moanne, ensfh.

  5. 7

Wat tinksto?

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