Webové stránky môžu s Cron vykonávať plánované úlohy

hodiny

V práci máme množstvo redundantných monitorovacích systémov, ktoré pravidelne vykonávajú procesy. Niekto beží každú minútu, niekto raz za noc podľa toho, čo robí. Napríklad by sme mohli spustiť skript, ktorý exportuje všetkých zákazníkov, ktorí neuskutočnili nákup do 30 dní, aby sme im poslali kupón.

Namiesto toho, aby ste sa snažili sledovať všetky tieto údaje ručne, je oveľa jednoduchšie vytvárať úlohy, ktoré sa automaticky plánujú a vykonávajú. V systémoch založených na Unixe sa to dosahuje pomocou Cron. Pre vás ľudí, ktorí vedia, čo robíte, neváhajte ma a čitateľov vzdelávať, ak použijem dezinformácie.

Je to poľutovaniahodné, ale typický webový vývojár Cron vôbec nepozná. Aj keď sú, spoločnosti poskytujúce webhosting často neposkytujú prístup alebo podporu spoločnosti Cron. Môj hostiteľ je jedným z tých druhých - umožňujú vám ho používať, ale nepodporujú ho.

Čo je Cron?

Cron je pomenovaný pre grécke slovo Chronos, čo znamená čas. Cron beží v nepretržitej slučke na vykonávanie úloh, ktoré zhromažďuje Crontab (možno pomenovaný pre pútkoulator. Tieto úlohy sa zvyčajne označujú ako Cronjobs a môžu odkazovať na skripty na vašom webe.

Cron Diagram Vysvetlenie

Ako nastavím Crontab

Dostať Cron do skutočného fungovania môže byť náročné, takže tu je to, čo som sa naučil a ako som to urobil Ako Suck:

  1. Nastavil som svoj skript, aby som skontroloval Twitter API či niekto odpovedal @ifsuck. Porovnal som tieto správy so správami, ktoré som už uložil na webovej stránke, a zadal som všetky nové.
  2. Keď skript fungoval, povolil som používateľovi oprávnenie na vykonanie skriptu (744) a pridal som odkaz na skript do môjho súboru Cronjob - o tom neskôr.
  3. Potom som sa musel prihlásiť na svoju webovú stránku cez SSH. Na počítači Mac to trvalo otvorením terminálu a zadaním textu SSH username@domain.com kde username bolo užívateľské meno, ktoré som chcel použiť a doménou bola webová stránka. Potom som bol vyzvaný na zadanie hesla.
  4. Potom som sa pokúsil spustiť skript priamo z príkazového riadku zadaním názvu súboru a relatívnej cesty na serveri: /var/www/html/myscript.php
  5. Keď som zistil, že to funguje správne, do prvého riadku súboru som pridal potrebný Unixový kód: #! / usr / bin / php -q . Verím, že to jednoducho povedie Unixu, aby na vykonanie skriptu použil PHP.
  6. Na príkazovom riadku Terminál som napísal crontab (ostatní možno budú musieť písať crontab -e) a stlačte kláves Enter ... a to bolo všetko, čo bolo treba!

Syntax pre váš súbor Cronjob

Pokiaľ ide o vyššie uvedený bod 2, Cron využíva dômyselnú schému na určenie, kedy sa vaše skripty spustia. V skutočnosti to môžete skopírovať a vložiť do svojho súboru Cronfile (na mojom hostiteľovi sa nachádza v / var / cievka / cron / s rovnakým menom ako moje užívateľské meno).

# + —————- minúta (0 - 59)
# | + ————- hodina (0 - 23)
# | | + ———- deň v mesiaci (1 - 31)
# | | | + ——- mesiac (1 - 12)
# | | | | + —– deň v týždni (0 - 6) (nedeľa = 0 alebo 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Vyššie uvedené bude vykonávať môj skript každú minútu. Keby som chcel, aby to bežalo len raz za hodinu, tak by som dal len koľko minút po hodine, ktoré si prajem, aby to bežalo, takže keby to bolo na 30-minútovej hranici:

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

Nezabudnite tiež nastaviť povolenia pre tento súbor ako spustiteľný súbor! Zistil som, že syntax, povolenia a vykonávanie crontabu z okna Terminál boli najdôležitejšími faktormi. Zakaždým, keď súbor znova uložím, zistím, že je potrebné resetovať aj moje povolenia!

AKTUALIZÁCIA: Ak sa chcete ubezpečiť, že sú úlohy spustené, jedným jednoduchým spôsobom je aktualizácia databázového poľa pri poslednom spustení skriptu. Ak je to zriedkavé, stačí napísať e-mail, ktorý ste sami poslali.

Ďalšie zdroje Cron:

Koľko úloh by ste mohli automatizovať pomocou Cronu?

8 Komentáre

  1. 1

    Dobre prebratý článok o nastavení cronu, pre niekoho nového v crojoboch je najťažšou časťou pri nastavovaní cronu zistiť interval vykonania cronjobu a je dosť ľahké dostať na prvý pokus nesprávny interval. Ak sú vaše cronjoby citlivé na čas, je dobré zahrnúť do skriptu niektoré kódy na potvrdenie stavu, aby ste boli informovaní o stave vykonania úlohy.

  2. 2

    Ahoj Doug,

    Pri práci s úlohami cron je potrebné vziať do úvahy niekoľko vecí.

    Najskôr po niekoľkých desiatkach si budete priať, aby ste mali používateľské rozhranie, databázu a anglickú syntax 😉

    Po druhé, cron v danom čase úlohu spustí, bez ohľadu na to, či bolo predchádzajúce vyvolanie úlohy dokončené. Takže spustenie úlohy raz za minútu, ktorá trvá 2 minúty, rýchlo povedie k spusteniu rovnakej úlohy.

    Ďalej sa zobrazí hlásenie chýb, keď sa niečo pokazí, takže budete musieť pridať vlastné hlásenie chýb.

    Riešil som ich niekoľkými spôsobmi:
    - nechať aplikáciu spustiť prostredníctvom cron looku v databáze a určiť, čo je potrebné spustiť. Spustite ho raz za minútu alebo hodinu podľa toho, čo chcete
    - nechajte každý skript vytvoriť súbor „uzamknutia“ v priečinku / tmp a ak existuje, nespúšťajte ho znova, zabráni to duplicitným úlohám, ak ich nechcete
    - ak skript nájde súbor zámku starší ako 1 hodinu (alebo čo naznačuje, že ste zomreli), pošlite e-mailové upozornenie
    - nechať skript poslať e-mail o zlyhaní práce, aby ste vedeli, že sa niečo pokazilo
    - pozrite sa na rámce ako Flux alebo komerčné plánovače, keď vaše potreby presahujú niekoľko skriptov

    Chris

  3. 4

    Ďalej dodám, že na väčšine systémov Linux / Unix používa výraz „crontab -e“ svoj crontab na úpravu. Myslím, že váš hostiteľ (Jumpline) z bezpečnostných dôvodov používa upravenú verziu.

  4. 5

    Dodnes si pamätám prvý deň, keď som stretol Cronnieho. Počula som o nej veci, že bola spoľahlivá, vždy načas, ale niekedy trochu mätúca ohľadom jej zámerov.

    Zistil som, že je to pravda, pretože pre mňa bola spočiatku úplnou záhadou. Keď som sa okolo nej pýtal, dosť rýchlo som pochopil, ako rada operuje. Teraz si neviem predstaviť, že by som v živote prešiel bez nej. Robí to všedné vzrušujúce a dvíha z mojich ramien veľa bremien.

    So všetkou vážnosťou mám pocit, že som povrch poškriabal iba tým, čo dokážem automatizovať pomocou úloh cron. Sú skutočne najlepším priateľom vývojárov. Ak na správu svojho servera používate niekoho ako CPanel, poskytuje oveľa príjemnejšie rozhranie na vytváranie klientov. Kompletné s rozbaľovacími ponukami pre minútu, hodinu, deň, mesiac atď., Ktoré vytvárajú riadok cron za vás.

  5. 7

    Rozhodne vidím, že toto by malo používať každý obchodník ... Existuje niekto, kto môže poskytnúť túto službu, pretože znie trochu „technicky“?

Čo si myslíte?

Táto stránka používa Akismet na zníženie spamu. Zistite, ako sa spracúvajú údaje vašich komentárov.