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 izgraditi 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 ko je novi u crojobs-u, najteži dio u postavljanju cron-a je odgonetnuti interval izvršavanja cronjob-a, a prilično je uobičajeno dobiti pogrešan interval u prvom pokušaju. Ako su vaši cronjobs vremenski osjetljivi, dobro je uključiti neke kodove u skriptu za odjekivanje statusa kako biste bili obaviješteni o statusu izvršenja posla.

  2. 2

    Zdravo Doug,

    Nekoliko stvari koje treba uzeti u obzir kada radite 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 da li je prethodno pozivanje posla završeno. Dakle, pokretanje posla jednom u minuti koji traje 2 minute brzo će dovesti do velikog broja pokretanja istog posla.

    Zatim, gotovo da nema izvještavanja o grešci kada nešto krene po zlu, tako da ćete morati dodati vlastito izvješćivanje o grešci.

    Na njih sam se obratio na nekoliko načina:
    – neka se aplikacija pokrene putem cron-a, pogleda u bazu podataka da odredi šta treba pokrenuti. Pokrenite ga jednom u minuti ili sat vremena ovisno o tome šta želite
    – neka svaka skripta kreira 'zaključanu' datoteku u /tmp i ako postoji, ne pokreni ponovo, ovo sprečava dupliranje poslova ako ih ne želiš
    – ako skripta pronađe zaključanu datoteku stariju od 1 sata (ili šta god 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 prevazilaze nekoliko skripti

    Kris

  3. 4

    Takođe ću dodati da na većini Linux/Unix sistema, “crontab -e” je ono što koristite za uređivanje vašeg crontab-a. Mislim da vaš domaćin (Jumpline) koristi modificiranu verziju iz sigurnosnih razloga.

  4. 5

    Još se sjećam prvog dana kada sam upoznao Cronnieja. Čuo sam stvari o njoj, da je bila pouzdana, uvijek na vrijeme, ali ponekad pomalo zbunjujuća u vezi s njenim namjerama.

    Otkrio sam da je to istina jer je ona za mene u početku bila potpuna misterija. Nakon što sam se raspitivao o njoj, prilično brzo sam shvatio kako voli da radi. Sada, ne mogu zamisliti da prođe dan bez nje u mom životu. Ona čini svakodnevicu uzbudljivom i skida mnoge terete s mojih ramena.

    Ozbiljno, osjećam se kao da sam samo zagrebao površinu onim što mogu automatizirati pomoću cron poslova. Oni su zaista najbolji prijatelji programera. Ako koristite nekoga kao što je CPanel za upravljanje vašim serverom, on pruža mnogo prijateljskiji interfejs za kreiranje cron-ova. Kompletan sa padajućim menijima za minute, sat, dan, mjesec, itd. koji za vas izgrađuju cron liniju.

  5. 7

    Definitivno vidim da je ovo nešto što bi svaki marketinški stručnjak trebao koristiti… Ima li ikoga ko može pružiti ovu uslugu jer zvuči previše „tehnološko“?

Šta ti misliš?

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