Web stranice mogu pokretati planirane zadatke s Cron-om

sat

Na radu imamo niz suvišnih sustava nadzora koji redovito izvršavaju procese. Neki trče svake minute, neki jednom na noć, ovisno o tome što rade. Na primjer, mogli bismo izvršiti skriptu koja izvozi sve kupce koji nisu obavili kupnju u 30 dana kako bi im poslala kupon.

Umjesto da pokušavate ručno pratiti sve to, puno je lakše graditi poslove koji se automatski raspoređuju i izvršavaju. Na sustavima koji se temelje na Unixu to se postiže pomoću Crona. Za ljude koji znate što radite, slobodno me educirajte i čitatelje ako izbacim bilo kakve dezinformacije.

Žalosno je, ali tipični web programer uopće nije upoznat s Cronom. Čak i ako jesu, tvrtke za web hosting često ne pružaju pristup ili podršku Cronu. Moj domaćin je jedan od potonjih - dopuštaju vam da ga koristite, ali ga ne podržavaju.

Što je Cron?

Cron je dobio ime po grčkoj riječi Chronos, što znači vrijeme. Cron radi u kontinuiranoj petlji za pokretanje zadataka koje je akumulirao Crontab (možda nazvan za karticaulator. Ti se zadaci obično nazivaju Cronjobs i mogu se pozivati ​​na skripte na vašoj web lokaciji.

Objašnjenje kronskog dijagrama

Kako postaviti Crontab

Navesti Crona da stvarno trči može biti izazov, pa evo što sam naučio i kako sam to učinio Ako je sranje:

  1. Postavio sam skriptu za provjeru Twittera API da vidi je li netko odgovorio @ifsuck. Usporedio sam te poruke s porukama koje sam već spremio na web mjestu, unoseći bilo koje nove.
  2. Kad je skripta uspjela, omogućio sam dopuštenja za izvršenje skripte (744) i dodao referencu na skriptu u svoju datoteku Cronjob - o tome kasnije.
  3. Tada sam se morao prijaviti na svoje web mjesto putem SSH-a. Na Macu je trebalo otvaranje terminala i tipkanje SSH korisničko ime@domena.com gdje je korisničko ime bilo korisničko ime koje sam želio koristiti, a domena je bilo web mjesto. Tada su me zatražili i dali lozinku.
  4. Zatim sam pokušao pokrenuti skriptu izravno iz naredbenog retka upisivanjem imena datoteke i relativne staze na poslužitelju: /var/www/html/myscript.php
  5. Nakon što sam ispravno radio, dodao sam potreban Unix kôd u prvi redak datoteke: #! / usr / bin / php -q . Vjerujem da ovo jednostavno govori Unixu da koristi PHP za izvršavanje skripte.
  6. U naredbeni redak terminala sam upisao crontab (drugi će možda trebati tipkati crontab -e) i pritisnite Enter ... i to je bilo sve što je trebalo!

Sintaksa za vašu datoteku Cronjob

S obzirom na gornju br. 2, Cron koristi genijalnu shemu za određivanje kada će se izvršavati vaše skripte. U stvari, ovo zapravo možete kopirati i zalijepiti u svoj Cronfile (na mom hostu se nalazi u / var / spool / cron / s imenom datoteke istim kao moje korisničko ime).

# + —————- minuta (0 - 59)
# | + ————- sat (0 - 23)
# | | + ———- dan u mjesecu (1 - 31)
# | | | + ——- mjesec (1 - 12)
# | | | | + —- dan u tjednu (0 - 6) (nedjelja = 0 ili 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Iznad će izvršiti moju skriptu svake minute. Da želim samo da radi jednom na sat, samo bih stavio koliko minuta nakon sata želim da se pokreće, pa ako je bilo na oznaci od 30 minuta:

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

Obavezno postavite i dozvole za ovu datoteku kao izvršne! Otkrio sam da su sintaksa, dozvole i izvršavanje crontaba iz prozora terminala najvažniji čimbenici. Svaki put kad bih ponovno snimio datoteku, pronašao bih i da je potrebno resetiranje mojih dozvola!

AŽURIRANJE: Ako želite osigurati da se poslovi izvode, jedan od jednostavnih načina je ažuriranje polja baze podataka zadnjim pokretanjem skripte. Ako je rjeđe, možete jednostavno skriptirati e-poruku poslanu sebi.

Dodatni Cron resursi:

Koliko biste poslova mogli automatizirati koristeći Cron?

8 Komentari

  1. 1

    Dobro pokriven članak o postavljanju crona, za nekoga tko je novi u crojobsima, najteži dio u postavljanju crona je shvatiti interval izvršavanja cronjoba i prilično je uobičajeno dobiti pogrešan interval u prvom pokušaju. Ako su vaši cronjobovi osjetljivi na vrijeme, dobro je u skriptu uključiti neke kodove za eho status kako biste bili informirani o statusu izvršenja posla.

  2. 2

    Bok Doug,

    Nekoliko stvari koje treba uzeti u obzir pri radu s cron poslovima.

    Prvo, nakon nekoliko desetaka, poželjet ćete da imate korisničko sučelje, bazu podataka i sintaksu engleskog izgleda 😉

    Drugo, cron će pokrenuti posao u određeno vrijeme, bez obzira je li prethodno pozivanje posla dovršeno. Dakle, izvođenje posla jednom u minuti koji traje 2 minute brzo će dovesti do mnogih istih poslova.

    Dalje, gotovo da nema izvještaja o pogreškama kada nešto pođe po zlu, pa ćete morati dodati vlastito izvještavanje o pogrešci.

    Obratio sam im se na nekoliko načina:
    - neka se aplikacija pokrene putem cron look-a u bazi podataka kako bi se utvrdilo što treba pokrenuti. Pokrenite ga jednom u minuti ili satu, ovisno o tome što želite
    - neka svaka skripta stvori datoteku 'lock' u / tmp i ako postoji, nemojte pokretati ponovno, ovo sprečava duplicirane poslove ako ih ne želite
    - ako skripta pronađe datoteku zaključavanja stariju od 1 sata (ili što već sugerira da ste umrli), pošaljite upozorenje e-poštom
    - neka skripta pošalje e-poruku o neuspjehu posla kako biste znali da je nešto pošlo po zlu
    - pogledajte okvire poput Fluxa ili komercijalnih planera kada vaše potrebe prijeđu nekoliko skripti

    chris

  3. 4

    Također ću dodati da na većini Linux / Unix sustava "crontab -e" služi za uređivanje crontaba. Mislim da vaš domaćin (Jumpline) koristi modificiranu verziju iz sigurnosnih razloga.

  4. 5

    Još se sjećam prvog dana kad sam upoznala Cronnie. Čula sam stvari o njoj, da je bila pouzdana, uvijek na vrijeme, ali ponekad pomalo zbunjujuća u vezi s njezinim namjerama.

    Otkrio sam da je to istina jer mi je isprva bila potpuna tajna. Nakon što sam se raspitao o njoj, prilično sam brzo shvatio kako voli raditi. Sad ne mogu zamisliti da u životu prođe dan bez nje. Ona čini svakodnevicu uzbudljivom i skida mnoge terete s mojih ramena.

    Ozbiljno, osjećam se kao da sam ogrebao površinu samo onim što mogu automatizirati s cron poslovima. Oni su uistinu najbolji prijatelj programera. Ako za upravljanje poslužiteljem koristite nekoga poput CPanela, on pruža puno ugodnije sučelje za stvaranje kruna. Kompletni s padajućim izbornicima za minute, sate, dane, mjesece itd. Koji grade cron liniju za vas.

  5. 7

    Definitivno vidim da je to nešto što bi svaki prodavač trebao koristiti ... Postoji li netko tko može pružiti ovu uslugu jer zvuči previše "tehnički"?

Što vi mislite?

Ova web stranica koristi Akismet za smanjenje neželjene pošte. Saznajte kako se podaci vašeg komentara obrađuju.