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. Sarcinile cron sunt incluse în toate planurile de găzduire web, alături de managerul de fișiere și de FTP-ul criptat.
Ce vei reuși
- adaugi, modifici și ștergi un cron job din Enhance;
- rulezi un script PHP cu aceeași versiune de PHP ca site-ul;
- păstrezi rezultatul rulărilor într-un fișier, ca să vezi dacă scriptul dă erori.
Înainte să începi
- Planurile noastre nu au acces SSH, dar cron jobs merg. Serverul le rulează în mediul izolat al site-ului, cu versiunea de PHP aleasă pentru site.
- Căile le scrii pornind de la
$HOME, directorul site-ului tău. Site-ul principal e în$HOME/public_html, deci un script de acolo se scrie$HOME/public_html/cron.php. Serverul înlocuiește singur$HOMEcu calea completă. - Versiunea de PHP a site-ului (8.2, 8.3 sau 8.4) o vezi în „Developer tools”, la „PHP” (vezi Versiunea PHP și setările PHP).
- Orele sunt cele ale României, pentru că serverul e setat pe ora Bucureștiului.
- Numele din ghid sunt cele din interfața Enhance în engleză. Dacă Enhance ți se deschide în română, poți trece pe engleză din dreapta sus: poza sau inițialele tale » „My account” » „Language”.
Pașii
- Intră în Enhance la https://server.nbt-host.com. În meniul din stânga apasă „Websites”, apoi pe site-ul tău.
- Deschide fila „Developer tools”. Dacă n-o vezi în rândul de file, e în meniul „Advanced”, la capătul rândului.
- Mergi la „Cron jobs” și apasă „Add cron job”. Dacă nu ai încă niciunul, butonul se numește „Add”.
- La „Cron type” alege:
- „Run command”, ca să rulezi o comandă sau un script. Scrii comanda la „Command”;
- „Request URL”, ca să deschizi o adresă web. Scrii adresa la „Request URL”, cu
http://sauhttps://în față. Enhance o apelează singur, fără să păstreze vreun rezultat.
- La „Interval” alege cât de des rulează: „Every minute”, „Every 15 minutes”, „Every hour”, „Every day” (la miezul nopții), „Every week” (luni, la miezul nopții) sau „Every month” (pe 1, la miezul nopții). Pentru altă oră alege „Custom” și completează dedesubt „Minute”, „Hour”, „Day of month”, „Month” și „Weekday”. Fiecare are o listă cu variante gata făcute și o căsuță în care scrii tu valoarea. Pentru ora 3:00 noaptea, de exemplu, pui 0 la „Minute” și 3 la „Hour”.
- Apasă „Add”. Cron job-ul apare în listă, cu comanda și intervalul lui.
- Ca să-l modifici, deschide meniul rândului, apasă „Edit”, fă schimbările și apasă „Save”. Ca să-l ștergi, alege „Delete” din același meniu și confirmă.
Exemple de comenzi
În exemple, înlocuiește calea și adresa cu cele reale.
Un script PHP, rulat cu tipul „Run command”:
php $HOME/public_html/cron.phpComanda php pornește aceeași versiune de PHP ca site-ul, deci nu scrii nicăieri numărul versiunii. Dacă schimbi versiunea site-ului, cron job-ul o folosește pe cea nouă.
O adresă web, pentru modulele care îți dau un link de cron: alegi tipul „Request URL” și lipești linkul, de exemplu https://domeniul-tau.ro/cale/catre/cron.
WordPress, cu un cron real în locul celui pornit de vizitatori:
Întâi uită-te în lista „Cron jobs”: dacă există deja un rând cu wp-cron.php, site-ul are cron real și nu mai adaugi altul. Altfel:
- Deschide
wp-config.phpdin fila „Files” și, deasupra rândului care începe cu/* That's all, stop editing!, adaugă:define( 'DISABLE_WP_CRON', true ); - Adaugă un cron job de tipul „Request URL”, cu intervalul „Every 15 minutes” și adresa:
https://domeniul-tau.ro/wp-cron.php?doing_wp_cron
Dacă site-ul are multe sarcini programate, cum ar fi un magazin cu multe comenzi, alege „Custom” și scrie */10 la „Minute”: rulează o dată la 10 minute.
Rezultatul rulărilor
Enhance nu are o setare pentru email cu rezultatul fiecărei rulări. Ca să vezi ce face o comandă, păstrează rezultatul într-un fișier: adaugă la sfârșitul comenzii >> $HOME/cron.log 2>&1. Fișierul cron.log apare în fila „Files”, lângă public_html. Golește-l din când în când, pentru că altfel crește și îți ocupă spațiu.
Când scriptul merge cum trebuie, înlocuiește finalul cu > /dev/null 2>&1: rezultatul nu se mai păstrează nicăieri.
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/..., nu căi relative. - Nu folosi caracterul
%în comandă: pentru cron are un înțeles special. Dacă ai nevoie de el, scrie\%. - Ai mare grijă cu comenzile care șterg fișiere (
rm): cu o cale greșită poți șterge tot site-ul. - Lasă oprită setarea „Allow editing of cron from website container”. Dacă o pornești, scripturile de pe site își pot adăuga singure cron jobs, iar programele rău intenționate pentru WordPress exact asta fac.
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/. Adaugă temporar>> $HOME/cron.log 2>&1la sfârșitul comenzii și deschidecron.logdupă următoarea rulare: acolo apare eroarea. - În
cron.logscrie „Permission denied”. Probabil ai scris doar calea scriptului. Pune în fața ei programul care îl rulează, de exempluphp $HOME/public_html/cron.php. - Scriptul merge din browser, dar nu din cron. Unele scripturi caută fișierele pornind de la folderul în care se află. Intră întâi în folderul lor:
cd $HOME/public_html && php cron.php. cron.logcrește prea mult. Golește-l sau înlocuiește finalul comenzii cu> /dev/null 2>&1.- 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.
