Un cron job e o comandă pe care serverul o rulează singur, la ore stabilite de tine: la fiecare 15 minute, în fiecare noapte sau o dată pe săptămână. Îl folosesc magazinele online, modulele de newsletter, sincronizările de stoc și WordPress, pentru articolele programate.
Ce vei reuși
- adaugi, modifici și ștergi un cron job din cPanel;
- rulezi un script PHP cu aceeași versiune de PHP ca site-ul;
- alegi dacă primești sau nu email cu rezultatul fiecărei rulări.
Înainte să începi
- Planurile noastre nu au acces SSH, dar cron jobs merg. Serverul le rulează într-un mediu restrâns, special pentru ele.
- Îți trebuie calea completă a scriptului. Directorul tău e
/home/UTILIZATOR: îl vezi pe pagina principală cPanel, în panoul „General Information”, la Director de pornire (Home Directory). Site-ul principal e în/home/UTILIZATOR/public_html. - Vezi ce versiune de PHP folosește site-ul (8.2 sau 8.3) în Software » „MultiPHP Manager” (vezi Versiunea PHP și setările PHP (MultiPHP)).
- Orele sunt cele ale României, pentru că serverul e setat pe ora Bucureștiului.
Denumirile din acest ghid sunt cele din cPanel în limba română, cu varianta în engleză în paranteză. Unele ecrane nu sunt traduse și apar în engleză; pe acelea le scriem între ghilimele.
Pașii
- Mergi la Avansat » Operațiuni cron (Advanced » Cron Jobs).
- La E-mail cron (Cron Email) scrie adresa pe care vrei rezultatul fiecărei rulări și apasă Actualizare e-mail (Update Email). La început e util: vezi imediat dacă scriptul dă erori.
- La Adăugare operațiune cron nouă (Add New Cron Job), alege cât de des rulează din Setări comune (Common Settings). De exemplu: O dată la 15 minute, O dată pe oră sau O dată pe zi. Câmpurile Minut, Oră, Ziua, Lună și Zi din săptămână se completează singure. Le poți modifica și de mână: pentru ora 3:00 noaptea pui Oră = 3 și Minut = 0.
- La Comandă (Command) scrie comanda. Găsești exemple mai jos.
- Apasă butonul Adăugare operațiune cron nouă.
- Cron job-ul apare în lista Operațiuni cron curente (Current Cron Jobs). Ca să-l modifici, apeși Editare (Edit), faci schimbările și apeși Editare linie (Edit Line). Ca să-l ștergi, apeși Ștergere (Delete).
Exemple de comenzi
În exemple, înlocuiește UTILIZATOR cu utilizatorul tău cPanel și calea cu cea reală.
Un script PHP, rulat cu PHP 8.3:
/usr/local/bin/ea-php83 /home/UTILIZATOR/public_html/cron.phpPentru PHP 8.2 scrii ea-php82. Folosește aceeași versiune ca site-ul, cea din „MultiPHP Manager”. Pe pagina Operațiuni cron, la „PHP command examples”, cPanel îți arată și un exemplu completat deja cu directorul tău.
O adresă web, pentru modulele care îți dau un link de cron:
/usr/bin/curl -s "https://domeniul-tau.ro/cale/catre/cron" > /dev/null 2>&1WordPress, cu un cron real în locul celui pornit de vizitatori:
- Deschide
wp-config.phpși, deasupra rândului care începe cu/* That's all, stop editing!, adaugă:define( 'DISABLE_WP_CRON', true ); - Adaugă un cron job cu frecvența O dată la 15 minute și comanda:
/usr/bin/wget -q --delete-after https://domeniul-tau.ro/wp-cron.php > /dev/null 2>&1
Dacă site-ul are multe sarcini programate, cum ar fi un magazin cu multe comenzi, alege O dată la 10 minute.
Fără email la fiecare rulare
Ca să nu mai primești email de la un anumit cron job, adaugă > /dev/null 2>&1 la sfârșitul comenzii, ca în exemplele de mai sus. Ca să nu mai primești de la niciunul, șterge adresa de la E-mail cron și salvează.
Poți păstra și un jurnal într-un fișier, în loc de email. Adaugă la sfârșitul comenzii >> /home/UTILIZATOR/cron.log 2>&1. Golește fișierul din când în când, pentru că altfel crește și îți ocupă spațiu.
Câteva reguli bune
- Rulează sarcina doar cât de des ai nevoie. Pentru majoritatea site-urilor ajunge o dată la 15 minute. O rulare pe minut încarcă serverul degeaba.
- Lasă destul timp între rulări, ca una să se termine înainte să înceapă următoarea.
- Scrie căile complete, de la
/home/UTILIZATOR/..., nu căi relative. - Ai mare grijă cu comenzile care șterg fișiere (
rm): cu o cale greșită poți șterge tot site-ul.
Dacă ceva nu merge
- Cron job-ul nu rulează deloc. Verifică ora (serverul folosește ora României) și calea, care trebuie să înceapă cu
/home/. Pune-ți temporar adresa la E-mail cron și scoate> /dev/null 2>&1din comandă: emailul primit îți arată eroarea. - În email scrie „Permission denied”. Probabil ai scris doar calea scriptului. Pune în fața ei programul care îl rulează, de exemplu
/usr/local/bin/ea-php83 /home/UTILIZATOR/.... - Apar erori PHP ciudate, deși site-ul merge. Cron job-ul rulează cu altă versiune de PHP decât site-ul. Scrie
ea-php82sauea-php83, după cum arată „MultiPHP Manager”. - Primești prea multe emailuri. Adaugă
> /dev/null 2>&1la sfârșitul comenzii sau șterge adresa de la E-mail cron. - Site-ul se mișcă greu la anumite ore. Probabil două sarcini grele pornesc în același timp sau rulează prea des. Programează-le la ore diferite, noaptea, și rulează-le mai rar.