15. nodaļa · 15.1
Cron Jobs: uzdevumus likt izpildīties automātiski
Noskatieties to īsā filmā
Cron job (jeb cronjob) ir uzdevums, ko serveris Jūsu vietā izpilda noteiktos laikos. Piemēram, katru nakti skripts, kas sakārto vecos datus, katru stundu savienojums ar Jūsu grāmatvedības sistēmu, vai WordPress vai Laravel ieplānotie uzdevumi. To iestatāt sadaļā Cron Jobs, zem Advanced Features.

Noteikumi pie WebOké
Serveri izmantojat kopā ar citām vietnēm. Tāpēc cron uzdevumiem ir spēkā noteikumi:
- Lieciet uzdevumam startēt ne biežāk kā reizi 10 minūtēs. To lūdzam ikvienam. Serveris to piespiedu kārtā nekontrolē, bet uzdevums, kas darbojas biežāk, palēnina serveri gan Jums, gan citiem. Ja Jums ir vairāki uzdevumi, nelieciet tiem visiem startēt vienlaikus.
- Lieciet uzdevumam būt īsam. Ja jāpaveic daudz, sadaliet darbu vairākos posmos.
Uzdevuma izveide
- DirectAdmin sadaļā Advanced Features noklikšķiniet uz Cron Jobs.
- Noklikšķiniet uz CREATE CRON JOB.
- Laukos Minute, Hour, Day of Month, Month un Day of Week norādiet, kad uzdevumam jādarbojas (1). Zvaigznīte * nozīmē "katru".
- Zem laika laukiem redzat sadaļā Cron job will run: (2) vienkāršā valodā, kad uzdevums darbosies. Pārbaudiet to.
- Laukā Command (3) ierakstiet, kam jānotiek, izmantojot pilnus ceļus (skatiet zemāk).
- Nevēlaties saņemt e-pastu pēc katras izpildes? Noklikšķiniet uz PREVENT EMAILS (4).
- Noklikšķiniet uz CREATE (5).

Pēc tam uzdevums parādās sarakstā. Ja vēlaties to dzēst, atzīmējiet to (1) un noklikšķiniet uz DELETE.

Laika piemēri
| Minute | Hour | Day of Month | Month | Day of Week | Nozīme |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Katru dienu plkst. 03:30 |
| */10 | * | * | * | * | Ik pēc 10 minūtēm |
| 0 | * | * | * | * | Katru pilno stundu |
| 15 | 8 | * | * | 1-5 | Darba dienās plkst. 08:15 (1 ir pirmdiena, 0 vai 7 ir svētdiena) |
| 0 | 2 | 1 | * | * | Katra mēneša pirmajā dienā plkst. 02:00 |
Vērtības varat atdalīt ar komatiem (1,15,30), norādīt diapazonu ar domuzīmi (5-7) un intervālu ar */ (*/2 nozīmē katru otro). Vēlams izvēlēties mierīgu, nejaušu laiku, piemēram, 03:17, nevis tieši pusnakti.
Komanda: pilni ceļi
Cron uzdevums nezina, kurā mapē tam jāsāk. Tāpēc vienmēr izmantojiet pilnus ceļus. Jūsu pakalpojums serverī atrodas mapē /home/, kam seko Jūsu DA lietotājvārds (skatiet Jūsu servera nosaukuma un DA lietotājvārda atrašana).
PHP skripta startēšana:
/usr/local/bin/php /home/lietotajvards/domains/jusudomens.nl/public_html/uzdevums.php
Tas izmanto tādu pašu PHP versiju kā Jūsu vietne, tātad versiju no Select PHP version (skatiet PHP versijas izvēle (Select PHP version)).
Tīmekļa adreses izsaukšana (piemēram, ja Jūsu programmatūra norāda cron URL):
curl --silent https://www.jusudomens.nl/cron.php > /dev/null
WordPress: WordPress pēc noklusējuma savus ieplānotos uzdevumus startē, kad ierodas apmeklētājs. Vietnei ar lielu apmeklētību vai, otrādi, ar mazu apmeklētību, to labāk darīt ar cron uzdevumu. Tādā gadījumā failā wp-config.php ierakstiet define('DISABLE_WP_CRON', true); un izveidojiet uzdevumu, kas ik pēc 15 minūtēm startē /usr/local/bin/php /home/lietotajvards/domains/jusudomens.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/lietotajvards/domains/jusudomens.nl/artisan schedule:run. Ņemiet vērā: schedule:run izpilda tikai tos uzdevumus, kas precīzi sakrīt ar cron izpildes brīdi. Ja cron darbojas ik pēc 10 minūtēm, uzdevums, kas ieplānots plkst. 08:05, nekad neizpildīsies.
E-pasts pēc katra uzdevuma
Ja uzdevums rada izvadi (tekstu vai kļūdas paziņojumu), serveris to var nosūtīt pa e-pastu. Tas notiek tikai tad, ja esat iestatījis adresi. Jums ir trīs iespējas:
- E-pasts uz paša adresi: noklikšķiniet uz SEND ALL CRON OUTPUT TO E-MAIL, ievadiet e-pasta adresi un noklikšķiniet uz SAVE. Tas attiecas uz visiem Jūsu uzdevumiem. Ja atstāsiet lauku tukšu, e-pasts netiks sūtīts.
- Bez e-pasta vienam uzdevumam: izveidojot uzdevumu, noklikšķiniet uz PREVENT EMAILS. Tad aiz komandas tiek pievienots >/dev/null 2>&1, un šī uzdevuma izvade pazūd, pat ja esat iestatījis adresi.
- Izvade žurnālfailā: aiz komandas pievienojiet >> /home/lietotajvards/cron-log.txt 2>&1. Tad vēlāk Failu pārvaldniekā varēsiet redzēt, ko uzdevums darīja. Šādu failu laiku pa laikam sakārtojiet.

Padoms: Iestatiet adresi, kamēr testējat jaunu uzdevumu. Tā Jūs uzreiz redzēsiet, vai tas darbojas. Pēc tam izslēdziet to vai sūtiet izvadi uz žurnālfailu. Cron uzdevumu e-pasti tiek ieskaitīti Jūsu pakalpojuma sūtīšanas limitā (skatiet Nosūtīšanas limiti un paziņojums "message limit reached").
Biežāk uzdotie jautājumi
Mans uzdevums rāda "Could not open input file".
Ceļš uz skriptu ir nepareizs. Pārbaudiet pilno ceļu Failu pārvaldniekā: tam jāsākas ar /home/lietotajvards/domains/.
Mans skripts darbojas pārlūkā, bet ne kā cron uzdevums.
Skripts, kas darbojas caur cron, nezina, zem kuras vietnes tas darbojas: $_SERVER['SERVER_NAME'] un $_SERVER['DOCUMENT_ROOT'] ir tukši, un relatīvie ceļi iekš include darbojas citādi. Skriptā izmantojiet pilnus ceļus vai izsauciet skriptu ar curl, izmantojot tīmekļa adresi.
Vai varu redzēt, kad uzdevums ir izpildījies?
DirectAdmin to Jūsu vietā neuzglabā. Tāpēc lieciet uzdevumam rakstīt izvadi žurnālfailā, ar datumu tajā (piemēram, date >> /home/lietotajvards/cron-log.txt kā pirmā komanda, ar ; starp tām).
Ko dara Run on @reboot?
Tad uzdevums darbojas tikai tad, kad serveris tiek restartēts, nevis noteiktos laikos. Tas vietnei ir nepieciešams gandrīz nekad.
