Poglavlje 15 · 15.1
Cron Jobs: automatsko pokretanje zadataka
Pogledajte to u kratkom filmu
Cron job (ili cron zadatak) je naredba koju server za Vas izvršava u točno određeno vrijeme. Na primjer, svake noći skripta koja čisti stare podatke, svaki sat povezivanje s Vašim knjigovodstvom, ili planirani zadaci WordPressa ili Laravela. To postavljate pod Cron Jobs, u sklopu Advanced Features.

Pravila kod WebOké
Server dijelite s drugim web mjestima. Zato vrijede pravila za cron zadatke:
- Neka se zadatak pokreće najviše jednom svakih 10 minuta. To tražimo od svih korisnika. Server to ne provjerava automatski, ali zadatak koji se izvršava češće usporava server za Vas i za druge. Ako imate više zadataka, nemojte ih sve pokretati u isto vrijeme.
- Neka zadatak bude kratak. Ako treba obaviti puno posla, podijelite ga na više krugova.
Izrada zadatka
- U DirectAdminu kliknite pod Advanced Features na Cron Jobs.
- Kliknite na CREATE CRON JOB.
- Pod Minute, Hour, Day of Month, Month i Day of Week upišite kada se zadatak treba pokretati (1). Zvjezdica * znači "svaki".
- Ispod polja za vrijeme vidjet ćete kod Cron job will run: (2) jednostavnim jezikom objašnjeno kada se zadatak pokreće. Provjerite to.
- Pod Command (3) upišite što se treba izvršiti, s potpunim putanjama (vidi dolje).
- Ne želite e-poštu nakon svakog izvršavanja? Kliknite na PREVENT EMAILS (4).
- Kliknite na CREATE (5).

Zadatak se zatim nalazi na popisu. Ako ga želite izbrisati, označite ga (1) i kliknite na Izbrišite.

Primjeri vremena
| Minute | Hour | Day of Month | Month | Day of Week | Značenje |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Svaki dan u 03:30 |
| */10 | * | * | * | * | Svakih 10 minuta |
| 0 | * | * | * | * | Svaki puni sat |
| 15 | 8 | * | * | 1-5 | Radnim danima u 08:15 (1 je ponedjeljak, 0 ili 7 je nedjelja) |
| 0 | 2 | 1 | * | * | Prvog dana svakog mjeseca u 02:00 |
Vrijednosti možete razdvojiti zarezima (1,15,30), raspon odrediti crticom (5-7) i interval pomoću */ (*/2 znači svaki drugi). Preporučujemo odabrati mirno, nasumično vrijeme, poput 03:17 umjesto točno ponoći.
Naredba: potpune putanje
Cron zadatak ne zna u kojoj mapi treba započeti. Zato uvijek koristite potpune putanje. Vaš paket se na serveru nalazi u /home/ nakon čega slijedi Vaše DA korisničko ime (vidi Vaš naziv servera i DA korisničko ime pronaći).
Pokretanje PHP skripte:
/usr/local/bin/php /home/korisničkoime/domains/vašadomena.nl/public_html/zadatak.php
Ovo koristi istu verziju PHP-a kao Vaše web mjesto, dakle verziju postavljenu u Select PHP version (vidi Odabir PHP verzije (Select PHP version)).
Pozivanje web adrese (na primjer, ako Vaš softver daje cron URL):
curl --silent https://www.vašadomena.nl/cron.php > /dev/null
WordPress: WordPress standardno pokreće svoje planirane zadatke kada dođe posjetitelj. Kod prometnog web mjesta ili web mjesta s malo posjeta, bolje je to riješiti cron zadatkom. U tom slučaju u wp-config.php postavite define('DISABLE_WP_CRON', true); i izradite zadatak koji svakih 15 minuta pokreće /usr/local/bin/php /home/korisničkoime/domains/vašadomena.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/korisničkoime/domains/vašadomena.nl/artisan schedule:run. Napomena: schedule:run izvršava samo zadatke koji padaju točno u trenutku pokretanja cron zadatka. Ako se cron pokreće svakih 10 minuta, zadatak planiran za 08:05 nikada se neće izvršiti.
E-pošta nakon svakog zadatka
Ako zadatak daje ispis (tekst ili poruku o pogrešci), server ga može poslati e-poštom. To se događa samo ako ste postavili adresu. Imate tri mogućnosti:
- E-pošta na vlastitu adresu: kliknite na SEND ALL CRON OUTPUT TO E-MAIL, upišite e-mail adresu i kliknite na SAVE. To vrijedi za sve Vaše zadatke. Ako ostavite polje prazno, nema slanja e-pošte.
- Bez e-pošte za jedan zadatak: pri izradi kliknite na PREVENT EMAILS. Tada se iza Vaše naredbe dodaje >/dev/null 2>&1 i ispis tog zadatka se odbacuje, čak i ako ste postavili adresu.
- Ispis u datoteci zapisa (log): iza naredbe dodajte >> /home/korisničkoime/cron-log.txt 2>&1. Tada kasnije u File Manageru možete vidjeti što je zadatak napravio. Takvu datoteku povremeno očistite.

Savjet: Postavite adresu dok testirate novi zadatak. Tako odmah vidite radi li ispravno. Nakon toga je isključite ili pošaljite ispis u datoteku zapisa. E-poruke cron zadataka ubrajaju se u ograničenje slanja Vašeg paketa (vidi Limiti za slanje i poruka 'message limit reached').
Često postavljana pitanja
Moj zadatak javlja "Could not open input file".
Putanja do skripte nije ispravna. Provjerite potpunu putanju u File Manageru: treba počinjati s /home/korisničkoime/domains/.
Moja skripta radi u pregledniku, ali ne kao cron zadatak.
Skripta koja se pokreće putem crona ne zna pod kojim web mjestom se izvršava: $_SERVER['SERVER_NAME'] i $_SERVER['DOCUMENT_ROOT'] su prazni, a relativne putanje u include funkciji rade drugačije. U skripti koristite potpune putanje, ili pozovite skriptu putem curl naredbe s web adresom.
Mogu li vidjeti kada se zadatak izvršio?
DirectAdmin to ne bilježi za Vas. Zato neka zadatak zapisuje svoj ispis u datoteku zapisa, s datumom uključenim (na primjer, date >> /home/korisničkoime/cron-log.txt kao prva naredba, uz ; između naredbi).
Što radi Run on @reboot?
U tom slučaju se zadatak pokreće samo kada se server ponovno pokrene, a ne u točno određeno vrijeme. To Vam gotovo nikada nije potrebno za web mjesto.
