Uebsajtet mund të ekzekutojnë detyra të planifikuara me Cron

orë

Ne kemi një numër të sistemeve të tepërta të monitorimit në punë që ekzekutojnë rregullisht proceset. Disa vrapojnë çdo minutë, disa një herë në natë në varësi të asaj që po bëjnë. Për shembull, ne mund të ekzekutojmë një skenar që eksporton të gjithë klientët që nuk kanë bërë një blerje brenda 30 ditësh për t'i dërguar atyre një kupon.

Në vend që të përpiqemi të mbajmë gjurmët e të gjitha këtyre me dorë, është shumë më e lehtë të ndërtosh punë që planifikohen dhe ekzekutohen automatikisht. Në sistemet e bazuara në Unix, kjo arrihet me Cron. Për ju njerëz që e dini se çfarë po bëni, mos ngurroni të më edukoni mua dhe lexuesit nëse hedh ndonjë dezinformim.

Unshtë për të ardhur keq, por zhvilluesi tipik i internetit nuk është fare i njohur me Cron. Edhe nëse janë, kompanitë e mbajtjes së faqeve në internet shpesh nuk ofrojnë akses ose mbështetje të Cron. Pritësi im është një nga të fundit - ata ju lejojnë ta përdorni, por ata nuk e mbështesin atë.

Çfarë është Cron?

Cron është emëruar për fjalën greke Chronos, që do të thotë kohë. Cron ekzekutohet në një lak të vazhdueshëm për të ekzekutuar detyrat që janë grumbulluar nga Crontab (mbase i emëruar për të) tabulator Këto detyra zakonisht quhen Cronjobs dhe mund të referojnë skenare në faqen tuaj.

Shpjegimi i Diagramit Cron

Si mund ta konfiguroj Crontab

Marrja e Cron për të kandiduar në të vërtetë mund të jetë sfiduese, kështu që ja çfarë mësova dhe si e bëra Nëse thith:

  1. Kam vendosur skenarin tim për të kontrolluar Twitter API për të parë nëse dikush ishte përgjigjur @ e thith. I krahasova ato mesazhe me mesazhet që kam ruajtur tashmë në faqen e internetit, duke futur ndonjë të re.
  2. Pasi skenari ishte duke punuar, unë aktivizova lejet që Përdoruesi të ekzekutonte skenarin (744) dhe shtova referencën e shkrimit në skedarin tim Cronjob - më shumë për këtë më vonë.
  3. Pastaj më duhej të identifikohesha në faqen time në internet përmes SSH. Në një Mac, ai mori hapjen e Terminalit dhe shtypjen Emri i përdoruesit SSH@domain.com ku emri i përdoruesit ishte emri i përdoruesit që unë dëshiroja të përdorja dhe domain ishte faqja e internetit. Më pas u kërkova dhe dhashë fjalëkalimin.
  4. Pastaj u përpoqa të ekzekutoja skriptin direkt nga komanda e shpejtë duke shtypur emrin e skedarit dhe rrugën relative në server: /var/www/html/myscript.php
  5. Sapo e kuptova duke punuar si duhet, shtova kodin e nevojshëm Unix në rreshtin e parë të skedarit: #! / usr / bin / php -q . Unë besoj se kjo thjesht i thotë Unix të përdorë PHP për të ekzekutuar skenarin.
  6. Në vijën e komandës Terminal, shtypa crontab (të tjerët mund të kenë nevojë të shtypin crontab -e) dhe goditi enter ... dhe kjo ishte gjithçka që duhej!

Sintaksa për Skedarin tuaj Cronjob

Në lidhje me # 2 më lart, Cron përdor një skemë të zgjuar për të përcaktuar se kur skenaret tuaja do të ekzekutohen. Në fakt, ju mund ta kopjoni dhe ngjisni këtë në Cronfile tuaj (në hostin tim, ndodhet në / var / rrotull / cron / me emrin e skedarit të njëjtë me emrin tim të përdoruesit).

# + —————- minutë (0 - 59)
# | + ————- orë (0 - 23)
# | | + ———- dita e muajit (1 - 31)
# | | | + ——- muaj (1 - 12)
# | | | | + —- dita e javës (0 - 6) (e diela = 0 ose 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Më sipër do të ekzekutojë skenarin tim çdo minutë. Sikur të doja të ekzekutohej një herë në orë, thjesht do të vendosja sa minuta pas orës që dëshiroja të funksiononte, kështu që nëse do të ishte në shenjën 30 minuta:

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

Sigurohuni që i keni vendosur edhe lejet në këtë skedar si të ekzekutueshme! Kam zbuluar që sintaksa, lejet dhe ekzekutimi i crontab nga dritarja e Terminalit ishin faktorët më të rëndësishëm. Sa herë që do të rishikoja skedarin, do të gjeja edhe lejet e mia që kërkonin rivendosje!

UPDATE: Nëse dëshironi të siguroni që punët po ekzekutohen, një mënyrë e thjeshtë është të azhurnoni një fushë të bazës së të dhënave me herën e fundit që u ekzekutua skenari. Nëse është më e rrallë, ju thjesht mund të shkruani një email dërguar vetes.

Burimet shtesë të Cron:

Sa punë mund të automatizoni duke përdorur Cron?

8 Comments

  1. 1

    Artikull i mbuluar mirë për vendosjen e një cron, për dikë të ri në punë me zor, pjesa më e vështirë në krijimin e një cron është të kuptosh intervalin e ekzekutimit të cronjob, dhe është mjaft e zakonshme të marrësh një interval të gabuar në provën e parë. Nëse punët tuaja të afërta janë të ndjeshme në kohë, është mirë të përfshini disa kode në skenar për të bërë jehonë të statusit, në mënyrë që të mbaheni të informuar për statusin e ekzekutimit të punës.

  2. 2

    Përshëndetje Doug,

    Disa gjëra për tu marrë në konsideratë kur punoni me cron jobs.

    Së pari, pas disa dhjetra, do të dëshironit të kishit një UI, një bazë të dhënash dhe sintaksë me pamje angleze

    Së dyti, cron do ta pushojë punën në kohën e caktuar, pavarësisht nëse thirrja e mëparshme e punës ka përfunduar. Kështu që drejtimi i një pune një herë në minutë që zgjat 2 minuta do të çojë shpejt në drejtimin e njëjtë të punës.

    Tjetra, nuk ka raportim të gabimit kur diçka shkon keq, kështu që do të duhet të shtoni raportimin tuaj të gabimit.

    Unë u jam drejtuar këtyre në disa mënyra:
    - kërkesa të aktivizohet përmes cron look në një bazë të dhënash për të përcaktuar se çfarë duhet të ekzekutohet. Drejtoni atë një herë në minutë ose orë në varësi të asaj që dëshironi
    - secili skenar duhet të krijojë një skedar 'bllokohet' në / tmp dhe nëse ekziston, mos filloni përsëri, kjo parandalon punë të dublikuara nëse nuk i dëshironi
    - nëse skenari gjen skedarin e kyçjes më të vjetër se 1 orë (ose çfarëdo që sugjeron se keni vdekur) dërgoni një njoftim me email
    - bëni që skenari të dërgojë email për dështimin e punës në mënyrë që të dini se diçka nuk shkoi mirë
    - shikoni kornizat si Flux ose programuesit komercialë kur nevojat tuaja tejkalojnë disa skenare

    Chris

  3. 4

    Unë gjithashtu do të shtoj se në shumicën e sistemeve Linux / Unix, "crontab -e" është ajo që ju përdorni për të redaktuar crontab tuaj. Unë mendoj se hosti juaj (Jumpline) po përdor një version të modifikuar për arsye sigurie.

  4. 5

    Ende mbaj mend ditën e parë që takova Cronnie. Kisha dëgjuar gjëra për të, se ajo ishte e besueshme, gjithmonë në kohë, por nganjëherë pak konfuze për qëllimet e saj.

    Kam parë që kjo është e vërtetë pasi ajo ishte një mister i plotë për mua në fillim. Pasi pyeta për të, e kapa shpejt se si i pëlqente të operonte. Tani, nuk mund ta imagjinoj një ditë që kalon pa të në jetën time. Ajo e bën botën të jetë emocionuese dhe heq shumë barrë nga shpatullat e mia.

    Me gjithë seriozitetin, unë ndjehem sikur kam gërvishtur sipërfaqen vetëm me ato që mund të automatizoj me punë cron. Ata me të vërtetë janë shoku më i mirë i zhvilluesve. Nëse jeni duke përdorur dikë si CPanel për të menaxhuar serverin tuaj, ai siguron një ndërfaqe shumë më miqësore për të krijuar crons. Plotësoni me menu zbritëse për minutë, orë, ditë, muaj, etj. Që ndërton linjën cron për ju.

  5. 7

    Unë padyshim e shoh se kjo është diçka që çdo tregtar duhet të përdorë ... A ka ndonjë që mund ta sigurojë këtë shërbim sepse tingëllon paksa "teknik"?

Çfarë mendoni ju?

Kjo faqe përdor Akismet për të reduktuar spamin. Mësoni se si përpunohet komenti juaj.