Site-urile web pot rula sarcini programate cu Cron

ceas

Avem la dispoziție o serie de sisteme de monitorizare redundante care execută în mod regulat procese. Unele aleargă în fiecare minut, altele o dată pe noapte, în funcție de ceea ce fac. De exemplu, s-ar putea să executăm un script care exportă toți clienții care nu au efectuat o achiziție în 30 de zile pentru a le trimite un cupon.

În loc să încercați să urmăriți toate acestea manual, este mult mai ușor să creați lucrări care sunt programate și executate automat. Pe sistemele bazate pe Unix, acest lucru se realizează cu Cron. Pentru voi, oameni care știți ce faceți, nu ezitați să mă educați pe mine și pe cititori dacă arunc vreo dezinformare.

Este regretabil, dar dezvoltatorul web tipic nu este deloc familiarizat cu Cron. Chiar dacă sunt, companiile de găzduire web de multe ori nu furnizează accesul sau suportul pentru Cron. Gazda mea este una dintre acestea din urmă - vă permit să o utilizați, dar nu o acceptă.

Ce este Cron?

Cron este numit pentru cuvântul grecesc Chronos, adică timp. Cron rulează într-o buclă continuă pentru a rula sarcini care sunt acumulate de Crontab (probabil numit pentru filaulator. Aceste sarcini sunt denumite în mod obișnuit Cronjobs și pot face referire la scripturi de pe site-ul dvs.

Diagrama Cron Explicație

Cum configurez Crontab

A face ca Cron să ruleze efectiv poate fi o provocare, așa că iată ce am învățat și cum am făcut-o Dacă suge:

  1. Mi-am configurat scriptul pentru a verifica Twitter-ul API să văd dacă cineva a răspuns @ifsuck. Am comparat aceste mesaje cu mesajele pe care le-am salvat deja pe site, introducând altele noi.
  2. Odată ce scriptul a funcționat, am permis permisiuni utilizatorului să execute scriptul (744) și am adăugat referința scriptului la fișierul meu Cronjob - mai multe despre asta mai târziu.
  3. Apoi a trebuit să mă conectez la site-ul meu web prin SSH. Pe un Mac, a fost nevoie să deschidem Terminalul și să tastăm SSH username@domain.com unde numele de utilizator a fost numele de utilizator pe care am dorit să îl folosesc și domeniul a fost site-ul web. Mi s-a cerut apoi și am dat parola.
  4. Am încercat apoi să rulez scriptul direct din promptul de comandă, tastând numele fișierului și calea relativă de pe server: /var/www/html/myscript.php
  5. Odată ce am funcționat corect, am adăugat codul Unix necesar în prima linie a fișierului: #! / usr / bin / php -q . Cred că acest lucru îi spune pur și simplu Unix să utilizeze PHP pentru a executa scriptul.
  6. La linia de comandă Terminal, am tastat crontab (altele ar putea avea nevoie să tastați crontab -e) și apăsați Enter ... și asta era tot ce era nevoie!

Sintaxa pentru fișierul dvs. Cronjob

În ceea ce privește numărul 2 de mai sus, Cron utilizează o schemă ingenioasă pentru a stabili când vor fi executate scripturile. De fapt, puteți copia și lipi acest lucru în fișierul dvs. Cron (pe gazda mea, este situat în / var / spool / cron / cu numele fișierului la fel ca numele meu de utilizator).

# + —————- minut (0 - 59)
# | + ————- oră (0 - 23)
# | | + ———- ziua lunii (1 - 31)
# | | | + ——- lună (1 - 12)
# | | | | + —- zi a săptămânii (0 - 6) (duminică = 0 sau 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Cele de mai sus îmi vor executa scriptul în fiecare minut. Dacă aș vrea să ruleze o dată pe oră, aș pune doar câte minute după oră doresc să ruleze, deci dacă ar fi la 30 de minute:

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

Asigurați-vă că ați setat și permisiunile pentru acest fișier ca executabil! Am constatat că sintaxa, permisiunile și executarea crontabului din fereastra Terminal au fost cei mai importanți factori. De fiecare dată când resau fișierul, aș găsi că permisiunile mele trebuie resetate!

ACTUALIZARE: Dacă doriți să vă asigurați că lucrările rulează, o modalitate simplă este să actualizați un câmp de bază de date cu ultima dată când a fost rulat scriptul. Dacă este mai puțin frecventă, puteți scrie doar un e-mail trimis către dvs.

Resurse Cron suplimentare:

Câte locuri de muncă ai putea automatiza folosind Cron?

4 Comentarii

  1. 1

    Articol bine acoperit despre configurarea unui cron, pentru cineva nou în crojobs, cea mai dificilă parte a configurării unui cron este să-ți dai seama de intervalul de execuție cronjob și este destul de comun să obții un interval greșit la prima încercare. Dacă lucrările dvs. cronice sunt sensibile la timp, este bine să includeți câteva coduri în script pentru a evoca starea, astfel încât să fiți informat cu privire la starea de execuție a lucrării.

  2. 2

    Bună Doug,

    Câteva lucruri de luat în considerare atunci când lucrați cu joburi cron.

    În primul rând, după câteva zeci, îți vei dori să ai o interfață de utilizare, o bază de date și o sintaxă cu aspect englezesc 😉

    În al doilea rând, cron va declanșa jobul la ora specificată, indiferent dacă invocarea anterioară a jobului a fost finalizată. Deci, executarea unei lucrări o dată pe minut, care durează 2 minute, va duce rapid la executarea multor lucrări.

    Apoi, nu există aproape nici o raportare a erorilor atunci când ceva nu merge bine, deci va trebui să adăugați propriul raportare a erorilor.

    Am abordat acestea în câteva moduri:
    - să declanșeze aplicația prin cron look într-o bază de date pentru a determina ce trebuie rulat. Rulați-l o dată pe minut sau oră, în funcție de ceea ce doriți
    - cereți fiecărui script să creeze un fișier „blocat” în / tmp și dacă există, nu porniți din nou, acest lucru împiedică lucrările duplicate dacă nu le doriți
    - dacă scriptul găsește fișierul de blocare mai vechi de 1 oră (sau orice sugerează că ai murit) trimite o alertă prin e-mail
    - cereți scriptului să trimită e-mailuri la eșecul lucrării, astfel încât să știți că ceva nu a mers bine
    - priviți cadre precum Flux sau planificatoare comerciale atunci când nevoile dvs. depășesc câteva scripturi

    Chris

  3. 4

    Voi adăuga, de asemenea, că pe majoritatea sistemelor Linux / Unix, „crontab -e” este ceea ce folosești pentru a-ți edita crontabul. Cred că gazda dvs. (Jumpline) folosește o versiune modificată din motive de securitate.

  4. 5

    Îmi amintesc încă prima zi în care l-am întâlnit pe Cronnie. Auzisem lucruri despre ea, că era de încredere, întotdeauna la timp, dar uneori un pic confuz cu privire la intențiile ei.

    Am constatat că acest lucru este adevărat, deoarece ea a fost un mister complet la început. După ce am întrebat despre ea, am prins destul de repede cum îi plăcea să opereze. Acum, nu-mi pot imagina să treacă o zi fără ea în viața mea. Ea face ca lumea să fie captivantă și îmi ridică multe poveri de pe umeri.

    Cu toată seriozitatea, simt că am zgâriat doar suprafața cu ceea ce pot automatiza cu joburile cron. Ei sunt cu adevărat cel mai bun prieten al dezvoltatorilor. Dacă folosiți pe cineva precum CPanel pentru a vă gestiona serverul, acesta oferă o interfață mult mai prietenoasă pentru a crea crons. Completează cu meniuri derulante pentru minute, ore, zile, luni etc., care creează linia cron pentru tine.

  5. 7

    Văd cu siguranță că acest lucru ar trebui să fie folosit de toți specialiștii în marketing ... Există cineva care să poată oferi acest serviciu, deoarece sună puțin prea „tehnic”?

Ce părere ai?

Acest site folosește Akismet pentru a reduce spamul. Aflați cum sunt procesate datele despre comentarii.