Retejoj Povas Fari Planitajn Taskojn per Cron

horloĝo

Ni havas multajn superfluajn kontrolajn sistemojn, kiuj regule plenumas procezojn. Iuj kuras ĉiun minuton, iuj unufoje nokte depende de tio, kion ili faras. Ekzemple, ni povus ekzekuti skripton, kiu eksportas ĉiujn klientojn, kiuj ne aĉetis dum 30 tagoj, por sendi al ili kuponon.

Prefere ol provi spuri ĉion ĉi permane, estas multe pli facile krei laborojn aŭtomate planitajn kaj plenumitajn. Ĉe Uniksaj sistemoj, ĉi tio plenumiĝas per Cron. Por vi, homoj, kiuj scias, kion vi faras, bonvolu eduki min kaj la legantojn, se mi elĵetas ian malinformon.

Estas bedaŭrinde, sed la tipa ttt-programisto tute ne konas Cron. Eĉ se ili estas, retejaj gastigaj kompanioj ofte ne provizas aliron aŭ subtenon al Cron. Mia gastiganto estas unu el la lastaj - ili permesas al vi uzi ĝin, sed ili ne subtenas ĝin.

Kio estas Cron?

krono estas nomumita laŭ la greka vorto Chronos, signifante tempo. Cron funkcias en kontinua buklo por funkciigi taskojn amasigitajn de Crontab (eble nomata por klapetoulator. Tiuj taskoj estas kutime nomataj Cronjobs, kaj povas referenci skriptojn en via retejo.

Cron-Diagramo-Klarigo

Kiel mi starigas la Crontab

Igi Cron efektive funkcii povas esti malfacila, do jen kion mi lernis kaj kiel mi faris ĝin Se Suĉu:

  1. Mi starigis mian skripton por kontroli Twitter -ojn API por vidi, ĉu iu respondis @ifsuck. Mi komparis tiujn mesaĝojn kun la mesaĝoj, kiujn mi jam konservis en la retejo, enigante iujn novajn.
  2. Post kiam la skripto funkciis, mi ebligis permesojn por la Uzanto plenumi la skripton (744) kaj aldonis la skriptreferencon al mia Cronjob-dosiero - pli pri tio poste.
  3. Mi tiam devis ensaluti al mia retejo per SSH. Sur Mac, tio bezonis malfermi Terminalon kaj tajpi SSH salutnomo@domajno.com kie uzantnomo estis la uzantnomo, kiun mi volis uzi kaj domajno estis la retejo. Oni tiam petis min kaj donis la pasvorton.
  4. Mi tiam provis ruli la skripton rekte de la komanda peto tajpante la dosiernomon kaj relativan vojon sur la servilo: /var/www/html/myscript.php
  5. Post kiam mi funkciis ĝuste, mi aldonis la necesan Unikso-kodon en la unua linio de la dosiero: #! / usr / bin / php -q . Mi kredas, ke ĉi tio simple diras al Unikso-Sistemo uzi PHP por plenumi la skripton.
  6. Ĉe la komandlinio Terminalo, mi tajpis kroniko (aliaj eble bezonos tajpi crontab -e) kaj premu enen ... kaj nur tio necesis!

Sintakso por via dosiero Cronjob

Koncerne al la # 2 supra, Cron uzas spritan skemon por determini kiam viaj skriptoj estos plenumitaj. Fakte vi povas efektive kopii kaj alglui ĉi tion en vian Cronfile (ĉe mia gastiganto, ĝi situas en / var / spool / cron / kun la dosiernomo same kiel mia salutnomo).

# + —————- minuto (0 - 59)
# | + ————- horo (0 - 23)
# | | + ———- tago de monato (1 - 31)
# | | | + ——- monato (1-12)
# | | | | + —- tago de semajno (0 - 6) (dimanĉo = 0 aŭ 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Ĉi-supre plenumos mian skripton ĉiun minuton. Se mi nur volus ĝin funkcii unufoje hore, mi nur metus kiom da minutoj post la horo mi volas, ke ĝi funkciu, do se ĝi estus ĉe la 30-minuta marko:

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

Certigu, ke vi ankaŭ agordis la permesojn al ĉi tiu dosiero kiel plenumebla! Mi trovis, ke sintakso, permesoj kaj ekzekuto de crontab de la Fenestra Terminalo estis la plej gravaj faktoroj. Ĉiufoje, kiam mi konservos la dosieron, mi trovus, ke miaj permesoj ankaŭ bezonas reagordi!

ĜISDATIGU: Se vi ŝatus certigi, ke la laboroj funkcias, unu simpla maniero estas ĝisdatigi datumbazan kampon kun la lasta fojo, kiam la skripto estis rulita. Se ĝi estas pli malofta, vi povas simple skribi retpoŝton senditan al vi mem.

Pliaj Cron-Rimedoj:

Kiom da laboroj vi povus aŭtomatigi uzante Cron?

8 Komentoj

  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

    Saluton 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”?

Kion vi pensas?

Ĉi tiu retejo uzas Akismeton por redukti spamon. Lernu, kiel via komento datiĝas.