Poglavje 15 · 15.1
Cronjob opravila: samodejno izvajanje opravil
Oglejte si v kratkem filmu
Cronjob opravilo (ali cronjob) je ukaz, ki ga strežnik za Vas izvede ob določenih časih. Na primer vsako noč zažene skripto, ki počisti stare podatke, vsako uro poveže podatke z Vašim računovodstvom ali zažene načrtovana opravila WordPress-a ali Laravel-a. To nastavite pod Cronjob opravila, v razdelku Napredne funkcije.

Pravila pri WebOké
Strežnik si delite z drugimi spletnimi mestmi. Zato veljajo pravila za Cronjob opravila:
- Naj se opravilo zažene največ enkrat na 10 minut. To prosimo od vseh uporabnikov. Strežnik tega sicer ne vsiljuje, vendar opravilo, ki se izvaja pogosteje, upočasni strežnik za Vas in za druge. Če imate več opravil, naj se ne zaženejo vsa ob istem trenutku.
- Opravilo naj bo kratko. Če je treba opraviti veliko dela, ga razdelite na več krogov.
Ustvarjanje opravila
- V DirectAdmin kliknite pod Napredne funkcije na Cronjob opravila.
- Kliknite USTVARITE DELO CRON.
- Pri poljih Minuta, Ura, Dan v mesecu, Mesec in Dan v tednu vnesite, kdaj naj se opravilo izvede (1). Zvezdica * pomeni "vsak/vsako".
- Pod časovnimi polji pri Zagnano bo opravilo Cron: (2) vidite v razumljivem jeziku, kdaj se opravilo izvede. To preverite.
- V polje Ukaz (3) vnesite, kaj naj se zgodi, s celotnimi potmi (glejte spodaj).
- Če ne želite prejemati e-pošte po vsakem izvajanju, kliknite PREPREČITE E-SPOROČILA (4).
- Kliknite USTVARI (5).

Opravilo se nato prikaže na seznamu. Če ga želite izbrisati, ga označite (1) in kliknite Izbriši.

Primeri časovnih nastavitev
| Minuta | Ura | Dan v mesecu | Mesec | Dan v tednu | Pomen |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Vsak dan ob 03:30 |
| */10 | * | * | * | * | Vsakih 10 minut |
| 0 | * | * | * | * | Vsako polno uro |
| 15 | 8 | * | * | 1-5 | Ob delavnikih ob 08:15 (1 je ponedeljek, 0 ali 7 je nedelja) |
| 0 | 2 | 1 | * | * | Prvi dan vsakega meseca ob 02:00 |
Vrednosti lahko ločite z vejicami (1,15,30), navedete razpon s pomišljajem (5-7) ali interval z */ (*/2 pomeni vsako drugo). Izberite raje mirnejši, naključen čas, na primer 03:17, namesto točno opolnoči.
Ukaz: celotne poti
Cronjob opravilo ne ve, v kateri mapi naj se začne. Zato vedno uporabite celotne poti. Vaš paket je na strežniku v /home/, čemur sledi Vaše DA uporabniško ime (glejte Kako najdete ime strežnika in uporabniško ime DA).
Zagon PHP-skripte:
/usr/local/bin/php /home/uporabniskoime/domains/vašadomena.nl/public_html/opravilo.php
To uporablja isto različico PHP-ja kot Vaše spletno mesto, torej različico iz Select PHP version (glejte Izbira različice PHP (Select PHP version)).
Klicanje spletnega naslova (na primer, če Vaša programska oprema poda cron URL naslov):
curl --silent https://www.vašadomena.nl/cron.php > /dev/null
WordPress: WordPress privzeto zažene svoja načrtovana opravila, ko pride obiskovalec. Pri prometnem spletnem mestu ali spletnem mestu z malo obiska je bolje to urediti s Cronjob opravilom. V tem primeru v wp-config.php nastavite define('DISABLE_WP_CRON', true); in ustvarite opravilo, ki vsakih 15 minut zažene /usr/local/bin/php /home/uporabniskoime/domains/vašadomena.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/uporabniskoime/domains/vašadomena.nl/artisan schedule:run. Pozor: schedule:run izvede le opravila, ki padejo natanko na trenutek izvajanja cron-a. Če se cron izvaja vsakih 10 minut, se opravilo, načrtovano za 08:05, nikoli ne izvede.
E-pošta po vsakem opravilu
Če opravilo vrne izhodne podatke (besedilo ali sporočilo o napaki), jih lahko strežnik pošlje po e-pošti. To se zgodi le, če ste nastavili naslov. Na voljo so tri možnosti:
- E-pošta na lasten naslov: kliknite POŠLJITE VSE IZHODNE PODATKE PROGRAMA CRON V E-POŠTO, vnesite e-poštni naslov in kliknite SHRANI. To velja za vsa Vaša opravila. Če polje pustite prazno, e-pošta ne bo poslana.
- Brez e-pošte za eno opravilo: ob ustvarjanju kliknite PREPREČITE E-SPOROČILA. Takrat se za ukazom doda >/dev/null 2>&1 in izhodni podatki tega opravila se izgubijo, tudi če ste nastavili naslov.
- Izhodni podatki v dnevniško datoteko: za ukazom dodajte >> /home/uporabniskoime/cron-log.txt 2>&1. Nato boste v Upravitelju datotek lahko videli, kaj je opravilo počelo. Tako datoteko občasno počistite.

Nasvet: Nastavite naslov, dokler testirate novo opravilo. Tako boste takoj videli, ali deluje. Nato ga izklopite ali pošljite izhodne podatke v dnevniško datoteko. E-sporočila Cronjob opravil se štejejo v limit pošiljanja Vašega paketa (glejte Omejitve pošiljanja in sporočilo 'message limit reached').
Pogosta vprašanja
Moje opravilo javlja "Could not open input file".
Pot do skripte ni pravilna. Preverite celotno pot v Upravitelju datotek: začeti se mora z /home/uporabniskoime/domains/.
Moja skripta deluje v brskalniku, vendar ne kot Cronjob opravilo.
Skripta, ki se izvaja prek cron-a, ne ve, pod katerim spletnim mestom se izvaja: $_SERVER['SERVER_NAME'] in $_SERVER['DOCUMENT_ROOT'] sta prazna, relativne poti v include pa delujejo drugače. V skripti uporabite celotne poti ali pa skripto pokličite prek curl z uporabo spletnega naslova.
Ali lahko vidim, kdaj se je opravilo izvedlo?
DirectAdmin tega ne beleži za Vas. Zato naj opravilo svoje izhodne podatke zapiše v dnevniško datoteko, z datumom vred (na primer date >> /home/uporabniskoime/cron-log.txt kot prvi ukaz, ločen z ;).
Kaj naredi možnost Zaženi na @reboot?
V tem primeru se opravilo izvede le ob ponovnem zagonu strežnika, ne pa ob določenih časih. To pri spletnem mestu skoraj nikoli ni potrebno.
