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 sve to pratiti ručno, 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 educirajte mene i čitatelje ako izbacim bilo kakve dezinformacije.

To je žalosno, 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 faktori. 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

    Well covered article on setting up a cron, for someone new to crojobs, the most difficult part in setting up a cron is to figure out the cronjob execution interval, and it is quite commong to get a wrong interval at first try. If your cronjobs are time sensitive, it is good to include some codes in the script to echo out status so that you are kept inform of the job execution status.

  2. 2

    Bok Doug,

    A couple of things to consider when working with cron jobs.

    First, after a few dozen, you’ll wish you had a UI, a database and english-looking syntax 😉

    Second, cron will fire the job at the specified time, regardless of whether the previous invocation of the job completed. So running a job once a minute that takes 2 minutes will quickly lead to lots of the same job running.

    Next, there is next to no error reporting when something goes wrong, so you’ll need to add your own error reporting.

    I’ve addressed these in a couple of ways:
    – have the application triggered via cron look in a database to determine what needs to be run. Run it once a minute or hour depending on what you want
    – have each script create a ‘lock’ file in /tmp and if it exists, don’t start again, this prevents duplicate jobs if you don’t want them
    – if the script finds the lock file older than 1 hour (or whatever suggests you died) send an email alert
    – have the script send email on failure of the job so you know something went wrong
    – look at frameworks like Flux or commercial schedulers when your needs get beyond a few scripts

    chris

  3. 4

    I’ll also add that on most Linux/Unix systems, “crontab -e” is what you use to edit your crontab. I think your host (Jumpline) is using a modified version for security reasons.

  4. 5

    I still remember the first day I met Cronnie. I had heard things about her, that she was dependable, always on time, but sometimes a bit confusing about her intentions.

    I found this to be true as she was a complete mystery to me at first. After asking around about her, I caught on fairly quickly as to how she liked to operate. Now, I can’t imagine a day going by without her in my life. She makes the mundane exciting, and lifts many burdens off my shoulders.

    In all seriousness, I feel like I’ve only scratched the surface with what I can automate with cron jobs. They truly are a developers best friend. If you are using someone like CPanel to manage your server, it provides a much more friendly interface to create crons. Complete with drop down menus for minute, hour, day, month, etc. that builds the cron line for you.

  5. 7

    I definitely see this is something every marketer should be using…Is there anyone who can provide this service because it sounds a bit too “techy”?

Što vi mislite?

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