Web stranice mogu pokretati planirane zadatke sa Cron-om

sat

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

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

Žalosno je, ali tipični web programer uopće nije upoznat s Cronom. Čak i ako jesu, kompanije 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.

Šta 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 po tabulatorulator. Ti se zadaci obično nazivaju Cronjobs i mogu se pozivati ​​na skripte na vašoj web lokaciji.

Objašnjenje Cron dijagrama

Kako postaviti Crontab

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

  1. Postavio sam skriptu za provjeru Twittera API da vidim da li je neko odgovorio @ifsuck. Uporedio sam te poruke sa porukama koje sam već spremio na web mjestu, unoseći bilo koje nove.
  2. Jednom kada je skripta radila, omogućio sam dozvole da Korisnik izvrši skriptu (744) i dodao referencu na skriptu u moju Cronjob datoteku - o tome kasnije.
  3. Tada sam se morao prijaviti na svoju web stranicu putem SSH-a. Na Macu je trebalo otvaranje terminala i kucanje SSH korisničko ime@domena.com gdje je korisničko ime bilo korisničko ime koje sam želio koristiti, a domena je bila web lokacija. Tada su me pitali i dali lozinku.
  4. Zatim sam pokušao pokrenuti skriptu izravno iz naredbenog retka upisivanjem imena datoteke i relativne putanje na poslužitelju: /var/www/html/myscript.php
  5. Nakon što sam ispravno radio, dodao sam neophodni Unix kod u prvi red datoteke: #! / usr / bin / php -q . Vjerujem da ovo jednostavno govori Unixu da koristi PHP za izvršavanje skripte.
  6. U naredbenu liniju terminala sam otkucao crontab (drugi će možda trebati tipkati crontab -e) i pritisnite enter ... i to je bilo sve što je trebalo!

Sintaksa za vašu Cronjob datoteku

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

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

Iznad će izvršiti moju skriptu svakog minuta. 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 faktori. Svaki put kad bih ponovo 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 poslova možete automatizirati koristeći Cron?

8 Komentari

  1. 1

    Dobro pokriven članak o postavljanju cron-a, za nekoga novog u crojobs-u, najteži dio u postavljanju cron-a je shvatiti interval izvršavanja cronjob-a, a sasvim 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

    Zdravo Doug,

    Nekoliko stvari koje treba uzeti u obzir prilikom rada s cron poslovima.

    Prvo, nakon nekoliko desetina, 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, nema izvještaja o greškama kada nešto krene po zlu, pa ćete morati dodati svoje 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 kreira datoteku 'zaključavanja' u / tmp i ako postoji, nemojte ponovo pokretati, ovo sprečava dvostruke zadatke 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-poštu 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 pređu nekoliko skripti

    Kris

  3. 4

    Takođe ću dodati da je na većini Linux / Unix sistema "crontab -e" ono što koristite za uređivanje vašeg 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 sa svojim namjerama.

    Otkrio sam da je to istina jer mi je isprva bila potpuna misterija. Nakon raspitivanja oko nje, prilično brzo sam shvatila kako voli voljeti raditi. Sad ne mogu zamisliti da u životu prođe jedan 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 zaista najbolji programer. Ako za upravljanje serverom koristite nekoga poput CPanela, on pruža mnogo ugodnije sučelje za kreiranje kruna. Komplet sa padajućim izbornicima za minute, sate, dane, mjesece itd. Koji grade cron liniju za vas.

  5. 7

    Definitivno vidim da je ovo 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"?

Šta ti misliš?

Ova stranica koristi Akismet kako bi smanjila neželjenu poštu. Saznajte kako se podaci vašeg komentara obrađuju.