Capitolul 15 · 15.1
Cron Jobs: rularea automată a sarcinilor
Urmăriți într-un film scurt
O sarcină cron (sau cron job) este o comandă pe care serverul o execută pentru dumneavoastră la ore fixe. De exemplu un script care curăță datele vechi în fiecare noapte, o legătură cu contabilitatea dumneavoastră în fiecare oră, sau sarcinile programate ale WordPress sau Laravel. Configurați acest lucru la Cron Jobs, sub Advanced Features.

Reguli la WebOké
Un server este partajat cu alte site-uri web. De aceea există reguli pentru sarcinile cron:
- Lăsați o sarcină să pornească cel mult o dată la 10 minute. Vă rugăm pe toți acest lucru. Serverul nu impune acest lucru, dar o sarcină care rulează mai des încetinește serverul pentru dumneavoastră și pentru ceilalți. Dacă aveți mai multe sarcini, nu le lăsați să pornească toate în același moment.
- Păstrați o sarcină scurtă. Dacă trebuie să se întâmple multe lucruri, împărțiți munca pe mai multe runde.
Crearea unei sarcini
- Faceți clic în DirectAdmin, sub Advanced Features, pe Cron Jobs.
- Faceți clic pe CREATE CRON JOB.
- Completați la Minute, Hour, Day of Month, Month și Day of Week când trebuie să ruleze sarcina (1). Un asterisc * înseamnă "fiecare".
- Sub câmpurile de timp vedeți la Cron job will run: (2) în limbaj simplu când rulează sarcina. Verificați acest lucru.
- Introduceți la Opdracht (3) ce trebuie să se întâmple, cu căi complete (vedeți mai jos).
- Nu doriți un e-mail de fiecare dată? Faceți clic pe PREVENT E-MAILS (4).
- Faceți clic pe CREATE (5).

Sarcina apare apoi în listă. Dacă doriți să o ștergeți, bifați-o (1) și faceți clic pe Ștergeți.

Exemple de orare
| Minute | Hour | Day of Month | Month | Day of Week | Semnificație |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | În fiecare zi la ora 03:30 |
| */10 | * | * | * | * | La fiecare 10 minute |
| 0 | * | * | * | * | În fiecare oră întreagă |
| 15 | 8 | * | * | 1-5 | În zilele lucrătoare la ora 08:15 (1 este luni, 0 sau 7 este duminică) |
| 0 | 2 | 1 | * | * | În prima zi a fiecărei luni la ora 02:00 |
Puteți separa valorile cu virgule (1,15,30), puteți indica un interval cu o liniuță (5-7) și un interval repetitiv cu */ (*/2 înseamnă la fiecare al doilea). Alegeți de preferință o oră liniștită, aleatorie, cum ar fi 03:17 în loc de exact miezul nopții.
Comanda: căi complete
O sarcină cron nu știe din ce director trebuie să înceapă. Folosiți de aceea întotdeauna căi complete. Pachetul dumneavoastră se află pe server în /home/ urmat de numele dumneavoastră de utilizator DA (vedeți Numele serverului și numele de utilizator DA găsiți).
Pornirea unui script PHP:
/usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/taak.php
Aceasta folosește aceeași versiune PHP ca site-ul dumneavoastră web, deci versiunea din Select PHP version (vedeți Alegerea versiunii de PHP (Select PHP version)).
Apelarea unei adrese web (de exemplu dacă software-ul dumneavoastră oferă o adresă URL cron):
curl --silent https://www.jouwdomein.nl/cron.php > /dev/null
WordPress: WordPress își pornește implicit sarcinile programate atunci când sosește un vizitator. La un site aglomerat sau un site cu puțini vizitatori este mai bine să faceți acest lucru cu o sarcină cron. Introduceți atunci în wp-config.php define('DISABLE_WP_CRON', true); și creați o sarcină care pornește la fiecare 15 minute /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/artisan schedule:run. Atenție: schedule:run execută numai sarcinile care corespund exact momentului cron. Dacă cron rulează la fiecare 10 minute, o sarcină programată la 08:05 nu va rula niciodată.
E-mail după fiecare sarcină
Dacă o sarcină produce un rezultat (text sau o eroare), serverul îl poate trimite prin e-mail. Acest lucru se întâmplă numai dacă ați configurat o adresă. Aveți trei posibilități:
- E-mail către o adresă proprie: faceți clic pe SEND ALL CRON OUTPUT TO E-MAIL, introduceți o adresă de e-mail și faceți clic pe SAVE. Acest lucru se aplică tuturor sarcinilor dumneavoastră. Dacă lăsați câmpul gol, nu veți primi niciun e-mail.
- Fără e-mail pentru o singură sarcină: faceți clic la creare pe PREVENT E-MAILS. Atunci se adaugă >/dev/null 2>&1 după comanda dumneavoastră, iar rezultatul acelei sarcini dispare, chiar dacă ați configurat o adresă.
- Rezultat într-un fișier jurnal: adăugați după comanda dumneavoastră >> /home/gebruikersnaam/cron-log.txt 2>&1. Astfel puteți vedea ulterior în File Manager ce a făcut sarcina. Curățați periodic un astfel de fișier.

Sfat: Configurați o adresă atâta timp cât testați o sarcină nouă. Astfel vedeți imediat dacă funcționează. Dezactivați-o apoi sau trimiteți rezultatul către un fișier jurnal. E-mailurile sarcinilor cron contează pentru limita de trimitere a pachetului dumneavoastră (vedeți Limitele de trimitere și mesajul "message limit reached").
Întrebări frecvente
Sarcina mea afișează "Could not open input file".
Calea către script nu este corectă. Verificați calea completă în File Manager: aceasta începe cu /home/gebruikersnaam/domains/.
Scriptul meu funcționează în browser, dar nu ca sarcină cron.
Un script care rulează prin cron nu știe sub ce site web rulează: $_SERVER['SERVER_NAME'] și $_SERVER['DOCUMENT_ROOT'] sunt goale, iar căile relative din include funcționează diferit. Folosiți în script căi complete, sau apelați scriptul prin curl cu adresa web.
Pot vedea când a rulat o sarcină?
DirectAdmin nu ține evidența acestui lucru pentru dumneavoastră. Lăsați de aceea sarcina să își scrie rezultatul într-un fișier jurnal, cu data inclusă (de exemplu date >> /home/gebruikersnaam/cron-log.txt ca primă comandă, cu ; între ele).
Ce face Run on @reboot?
În acest caz sarcina rulează numai când serverul repornește, nu la ore fixe. Acest lucru este aproape niciodată necesar pentru un site web.
