Tinklalapiai gali atlikti suplanuotas užduotis naudodami „Cron“

laikrodis

Darbe turime daug nereikalingų stebėjimo sistemų, kurios reguliariai vykdo procesus. Kai kurie bėga kiekvieną minutę, kiti - kartą per naktį, priklausomai nuo to, ką daro. Pvz., Galime vykdyti scenarijų, kuris eksportuoja visus klientus, kurie per 30 dienų nepirko, kad išsiųstų jiems kuponą.

Užuot bandžius sekti visa tai rankiniu būdu, daug lengviau kurti darbus, kurie yra automatiškai suplanuoti ir vykdomi. Unix sistemose tai pasiekiama naudojant „Cron“. Tiems žmonėms, kurie žino, ką darote, drąsiai mokykite mane ir skaitytojus, jei išmesiu dezinformaciją.

Gaila, bet tipiškas interneto kūrėjas visiškai nėra susipažinęs su Cronu. Net jei taip yra, interneto prieglobos įmonės dažnai neteikia prieigos prie „Cron“ ar jos nepalaiko. Mano šeimininkas yra vienas iš pastarųjų - jie leidžia jums tai naudoti, bet nepalaiko.

Kas yra Cronas?

Cron yra pavadintas graikišku žodžiu Chronos, reiškiančiu laikas. „Cron“ veikia nenutrūkstama grandine, kad paleistų „Crontab“ sukauptas užduotis (galbūt pavadintas kortelėulatorius. Šios užduotys paprastai vadinamos „Cronjobs“ ir gali būti nuorodos į jūsų svetainės scenarijus.

„Cron“ diagramos paaiškinimas

Kaip nustatyti „Crontab“

Kaip iš tikrųjų paleisti Croną, gali būti nelengva, todėl štai ką išmokau ir kaip tai padariau Jei čiulpia:

  1. Aš sukūriau savo scenarijų, norėdamas patikrinti „Twitter“ API ar niekas neatsakė @ifsuck. Palyginau tuos pranešimus su žinutėmis, kurias jau išsaugojau svetainėje, įvesdamas naujas.
  2. Kai scenarijus veikė, aš įgalinau vartotojui leidimus vykdyti scenarijų (744) ir pridėjau scenarijaus nuorodą į savo „Cronjob“ failą - daugiau apie tai vėliau.
  3. Tada turėjau prisijungti prie savo svetainės per SSH. „Mac“ sistemoje reikėjo atidaryti terminalą ir įvesti tekstą SSH vartotojo vardas@domenas.com kur vartotojo vardas buvo vartotojo vardas, kurį norėjau naudoti, o domenas buvo svetainė. Tada manęs paprašė ir daviau slaptažodį.
  4. Tada bandžiau paleisti scenarijų tiesiai iš komandų eilutės, serveryje įrašydamas failo pavadinimą ir santykinį kelią: /var/www/html/myscript.php
  5. Kai tinkamai dirbu, pirmoje failo eilutėje pridėjau reikiamą „Unix“ kodą: #! / usr / bin / php -q . Manau, kad tai paprasčiausiai nurodo „Unix“ naudoti PHP scenarijaus vykdymui.
  6. Komandos eilutėje „Terminal“ rašiau crontab (kitiems gali tekti įvesti tekstą crontab -e) ir paspauskite Enter ... ir tai buvo viskas, ko reikėjo!

„Cronjob“ failo sintaksė

Atsižvelgiant į pirmiau pateiktą Nr. 2, „Cron“ naudoja išradingą schemą, kad nustatytų, kada jūsų scenarijai bus vykdomi. Tiesą sakant, jūs galite tai nukopijuoti ir įklijuoti į savo „Cronfile“ (mano pagrindiniame kompiuteryje jis yra / var / spool / cron / failo pavadinimu tas pats kaip mano vartotojo vardas).

# + —————- minutė (0–59)
# | +————- valanda (0 - 23)
# | | +———- mėnesio diena (1 - 31)
# | | | + ——- mėnuo (1–12)
# | | | | + - savaitės diena (0–6) (sekmadienis = 0 arba 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Pirmiau minėtas scenarijus bus vykdomas kiekvieną minutę. Jei norėčiau, kad jis veiktų tik kartą per valandą, aš tiesiog įdėčiau, kiek minučių po valandos norėčiau, kad ji bėgtų, taigi, jei tai būtų 30 minučių riba:

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

Taip pat būtinai nustatykite šio failo teises kaip vykdomąją! Radau, kad sintaksė, leidimai ir „crontab“ vykdymas iš „Terminal“ lango buvo svarbiausi veiksniai. Kiekvieną kartą iš naujo išsaugodamas failą rasiu ir mano teises, kurias reikia iš naujo nustatyti!

ATNAUJINTI: Jei norite įsitikinti, kad darbai vykdomi, vienas paprasčiausių būdų yra atnaujinti duomenų bazės lauką paskutinį kartą, kai scenarijus buvo paleistas. Jei tai daroma rečiau, galite tiesiog parašyti sau atsiųstą el. Laišką.

Papildomi „Cron“ ištekliai:

Kiek darbų galėtumėte automatizuoti naudodamiesi „Cron“?

8 komentarai

  1. 1

    Gerai aprašytas straipsnis apie „cron“ sukūrimą tam, kas yra naujokas „crojobs“, sudėtingiausias dalykas nustatant „cron“ yra išsiaiškinti cronjob vykdymo intervalą, o iš pradžių bandyti gauti neteisingą intervalą. Jei jūsų „cronjobs“ yra jautrūs laikui, gerai, kad scenarijuje būtų keli kodai, kad būtų galima pakartoti būseną, kad jums būtų nuolat pranešama apie darbo vykdymo būseną.

  2. 2

    Labas Doug!

    Pora dalykų, į kuriuos reikia atsižvelgti dirbant su „cron“ darbais.

    Pirmiausia, po kelių dešimčių, norėtumėte, kad turėtumėte vartotojo sąsają, duomenų bazę ir angliškai atrodančią sintaksę 😉

    Antra, „cron“ atleis darbą nurodytu laiku, nepaisant to, ar ankstesnis darbo iškvietimas baigtas. Taigi atlikus darbą kartą per minutę, kuris užtruks 2 minutes, greitai bus paleistas tas pats darbas.

    Be to, šalia klaidų nepranešama, kai kažkas negerai, todėl turėsite pridėti savo klaidų ataskaitas.

    Kreipiausi į juos keliais būdais:
    - prašykite, kad programa būtų suaktyvinta naudojant „cron“ duomenų bazėje, kad būtų nustatyta, ką reikia paleisti. Paleiskite jį kartą per minutę ar valandą, priklausomai nuo to, ko norite
    - leiskite kiekvienam scenarijui sukurti „lock“ failą aplanke / tmp, o jei jis yra, nepradėkite iš naujo, taip išvengsite darbo dublikatų, jei jų nenorite
    - jei scenarijuje nustatyta, kad užrakto failas yra senesnis nei 1 valanda (ar kas nors rodo, kad jūs mirėte), siųskite el. Laišką
    - paprašykite scenarijaus atsiųsti el. Laišką apie nesėkmę, kad žinotumėte, jog kažkas nepavyko
    - pažvelkite į tokias sistemas kaip „Flux“ ar komercinius planuoklius, kai jūsų poreikiai viršija kelis scenarijus

    Chris

  3. 4

    Taip pat pridursiu, kad daugumoje „Linux / Unix“ sistemų „crontab -e“ yra tai, ką naudojate redaguodami savo „crontab“. Manau, kad jūsų kompiuteris („Jumpline“) saugumo sumetimais naudoja modifikuotą versiją.

  4. 5

    Vis dar prisimenu pirmą dieną, kai susipažinau su Cronnie. Buvau girdėjęs apie ją dalykų, kad ji buvo patikima, visada laiku, tačiau kartais šiek tiek painioja dėl savo ketinimų.

    Manau, kad tai tiesa, nes iš pradžių ji man buvo visiška paslaptis. Paklausęs apie ją, gana greitai susigaudžiau, kaip ji mėgsta operuoti. Dabar neįsivaizduoju dienos, kai praeisiu be jos savo gyvenime. Ji daro kasdienybę jaudinančia ir nuo mano pečių nukelia daug naštos.

    Kalbant rimtai, jaučiuosi taip, lyg subraižyčiau paviršių tik tuo, ką galiu automatizuoti atlikdamas „cron“ darbus. Jie tikrai yra geriausias kūrėjų draugas. Jei naudojate tokį asmenį kaip „CPanel“, kad tvarkytumėte savo serverį, jis suteikia kur kas draugiškesnę sąsają, kad būtų galima sukurti nešvarumus. Komplektuojami su išskleidžiamaisiais minutės, valandos, dienos, mėnesio ir kt. Meniu, kurie sukuria jums paprastą liniją.

  5. 7

    Aš tikrai matau, kad tai turėtų naudoti kiekvienas rinkodaros specialistas ... Ar yra kas nors, kuris gali suteikti šią paslaugą, nes ji skamba šiek tiek per daug „techniškai“?

Ką manote?

Ši svetainė naudoja "Akismet", kad sumažintų šlamštą. Sužinokite, kaip apdorojamas jūsų komentaras.