Webové stránky mohou spouštět naplánované úkoly s Cron

hodiny

We have a number of redundant monitoring systems at work that regularly execute processes. Some run every minute, some once a night depending on what they are doing. For example, we might execute a script that exports all customers who haven’t made a purchase in 30 days to send them a coupon.

Rather than trying to keep track of all of these by hand, it’s much easier to build jobs that are automatically scheduled and executed. On Unix-based systems, this is accomplished with Cron. For you folks that know what you’re doing, feel free to educate me and the readers if I throw out any disinformation.

It’s unfortunate, but the typical web developer isn’t acquainted with Cron at all. Even if they are, web hosting companies often don’t supply access to, or support of, Cron. My host is one of the latter – they allow you to use it, but they don’t support it.

Co je Cron?

Cron je pojmenován pro řecké slovo Chronos, což znamená čas. Cron běží v nepřetržité smyčce a spouští úkoly, které shromažďuje Crontab (možná pojmenovaný pro Kartaulator. Tyto úkoly se obvykle označují jako Cronjobs a mohou odkazovat na skripty na vašem webu.

Cron Diagram Vysvětlení

Jak nastavím Crontab

Getting Cron to actually run can be challenging, so here’s what I learned and how I did it for Pokud Suck:

  1. I set up my script to check Twitter’s API zda někdo odpověděl @ifsuck. Porovnal jsem tyto zprávy se zprávami, které jsem již uložil na webu, a zadal všechny nové.
  2. Jakmile skript fungoval, povolil jsem uživateli oprávnění k provádění skriptu (744) a přidal odkaz na skript do mého souboru Cronjob - o tom později.
  3. Poté jsem se musel přihlásit na svůj web přes SSH. Na počítači Mac to vyžadovalo otevření terminálu a psaní SSH uživatelské jméno@domena.com kde uživatelské jméno bylo uživatelské jméno, které jsem chtěl použít, a doménou byla webová stránka. Poté jsem byl vyzván k zadání hesla.
  4. Poté jsem se pokusil spustit skript přímo z příkazového řádku zadáním názvu souboru a relativní cesty na serveru: /var/www/html/myscript.php
  5. Jakmile to fungovalo správně, přidal jsem do prvního řádku souboru potřebný unixový kód: #! / usr / bin / php -q . Věřím, že to jednoduše řekne Unixu, aby k provedení skriptu použil PHP.
  6. Na příkazovém řádku Terminálu jsem napsal crontab (ostatní možná budou muset psát crontab -e) a stiskněte Enter ... a to bylo vše, co bylo potřeba!

Syntaxe vašeho souboru Cronjob

With regard to #2 above, Cron utilizes an ingenious scheme for determining when your scripts will be executed. In fact, you can actually copy and paste this into your Cronfile (on my host, it’s located in / var / cívka / cron / s názvem souboru shodným s mým uživatelským jménem).

# + —————- minuta (0 - 59)
# | + ————- hodina (0 - 23)
# | | + ———- den v měsíci (1 - 31)
# | | | + ——- měsíc (1 - 12)
# | | | | + —- den v týdnu (0 - 6) (neděle = 0 nebo 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Výše uvedené spustí můj skript každou minutu. Kdybych chtěl, aby běžel jen jednou za hodinu, dal bych jen, kolik minut po hodině si přeji, aby běželo, takže kdyby to bylo na 30minutové značce:

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

Be sure you set the permissions to this file as executable, too! I found that syntax, permissions, and executing crontab from the Terminal window were the most important factors. Each time I’d resave the file, I’d find my permissions needing reset as well!

UPDATE: If you’d like to ensure the jobs are running, one simply way is to update a database field with the last time the script was run. If it’s more infrequent, you may just script an email sent to yourself.

Další zdroje Cron:

Kolik úloh byste mohli pomocí Cronu automatizovat?

8 Komentáře

  1. 1

    Dobře popsaný článek o nastavení cronu, pro někoho nového v crojobech je nejobtížnější částí při nastavení cronu zjistit interval provádění cronjob a je docela dobré získat špatný interval na první pokus. Pokud jsou vaše cronjoby časově citlivé, je dobré zahrnout do skriptu některé kódy, které ozvění stav, abyste byli průběžně informováni o stavu provádění úlohy.

  2. 2

    Hi Doug,

    Při práci s úlohami cron je třeba zvážit pár věcí.

    Nejprve po několika desítkách si budete přát, abyste měli uživatelské rozhraní, databázi a anglickou syntaxi 😉

    Zadruhé, cron spustí úlohu v zadaný čas, bez ohledu na to, zda bylo předchozí vyvolání úlohy dokončeno. Takže spuštění úlohy jednou za minutu, která trvá 2 minuty, rychle povede ke spuštění stejné úlohy.

    Když se něco pokazí, není k dispozici žádné hlášení chyb, takže budete muset přidat vlastní hlášení chyb.

    Řešil jsem to několika způsoby:
    - nechat aplikaci spustit pomocí cron looku v databázi a určit, co je třeba spustit. Spusťte jej jednou za minutu nebo hodinu podle toho, co chcete
    - nechte každý skript vytvořit soubor 'lock' v / tmp a pokud existuje, nespouštějte znovu, zabráníte tak duplicitním úlohám, pokud je nechcete
    - pokud skript najde soubor zámku starší než 1 hodinu (nebo cokoli naznačuje, že jste zemřeli), pošlete e-mailové upozornění
    - nechat skript poslat e-mail o selhání práce, abyste věděli, že se něco pokazilo
    - podívejte se na rámce jako Flux nebo komerční plánovače, když vaše potřeby překročí několik skriptů

    Chris

  3. 4
  4. 5

    Stále si pamatuji první den, kdy jsem potkal Cronnie. Slyšel jsem o ní věci, že byla spolehlivá, vždy včas, ale někdy trochu matoucí ohledně jejích záměrů.

    Zjistil jsem, že je to pravda, protože pro mě byla zpočátku úplnou záhadou. Když jsem se na ni zeptal, docela rychle jsem pochopil, jak ráda operuje. Teď si nedokážu představit, že by v jejím životě prožil den bez ní. Dělá to pozemské vzrušující a zvedá z mých ramen mnoho břemen.

    Se vší vážností mám pocit, že jsem jen poškrábal povrch tím, co mohu automatizovat pomocí úloh cron. Opravdu jsou nejlepšími přáteli vývojářů. Pokud ke správě serveru používáte někoho jako CPanel, poskytuje mnohem přátelštější rozhraní pro vytváření cronů. Kompletní s rozbalovacími nabídkami pro minutu, hodinu, den, měsíc atd., Které pro vás vytvářejí linii cron.

  5. 7

    Určitě vidím, že toto by měl používat každý obchodník ... Existuje někdo, kdo může tuto službu poskytnout, protože zní příliš „technicky“?

Co si myslíte?

Tyto stránky používají Akismet k omezení spamu. Zjistěte, jak jsou vaše údaje komentářů zpracovávány.