15 skyrius · 15.1
Periodinės užduotys: automatinis užduočių vykdymas
Peržiūrėkite trumpame vaizdo įraše
Periodinė užduotis (cron taškas) yra komanda, kurią serveris Jums įvykdo nustatytu laiku. Pavyzdžiui, kiekvieną naktį paleidžiamas skriptas, kuris sutvarko senus duomenis, kiekvieną valandą sinchronizuojama su Jūsų apskaita arba vykdomos WordPress ar Laravel suplanuotos užduotys. Tai nustatote skiltyje Periodinės užduotys, kuri yra po Išplėstinės funkcijos.

Taisyklės WebOké sistemoje
Serverį naudojate kartu su kitomis svetainėmis. Todėl periodinėms užduotims galioja tam tikros taisyklės:
- Leiskite užduočiai startuoti ne dažniau kaip kartą per 10 minučių. To prašome iš visų. Serveris to neriboja techniškai, tačiau dažniau vykdoma užduotis lėtina serverį tiek Jums, tiek kitiems. Jei turite kelias užduotis, nesustatykite jų taip, kad visos startuotų tuo pačiu metu.
- Užduotis turėtų būti trumpa. Jei reikia atlikti daug darbo, padalykite jį į kelis etapus.
Užduoties sukūrimas
- DirectAdmin aplinkoje, skiltyje Išplėstinės funkcijos, spustelėkite Periodinės užduotys.
- Spustelėkite SUKURTI PERIODINĘ UŽDUOTĮ.
- Laukeliuose Minutė, Valanda, Mėnesio diena, Mėnuo ir Savaitės diena nurodykite, kada užduotis turi veikti (1). Žvaigždutė * reiškia "kiekvieną".
- Po laiko laukeliais ties Periodinė užduotis bus inicijuota: (2) matysite paaiškinimą paprasta kalba, kada užduotis bus vykdoma. Patikrinkite tai.
- Lauke Opdracht (3) įrašykite, kas turi būti atlikta, naudodami pilnus kelius (žiūrėkite žemiau).
- Nenorite gauti laiško po kiekvieno vykdymo? Spustelėkite VENGTI EL. LAIŠKŲ (4).
- Spustelėkite SUKURTI (5).

Po to užduotis atsiras sąraše. Jei norite ją ištrinti, pažymėkite ją (1) ir spustelėkite Ištrinti.

Laiko nustatymų pavyzdžiai
| Minutė | Valanda | Mėnesio diena | Mėnuo | Savaitės diena | Reikšmė |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Kiekvieną dieną 03:30 |
| */10 | * | * | * | * | Kas 10 minučių |
| 0 | * | * | * | * | Kas lygią valandą |
| 15 | 8 | * | * | 1-5 | Darbo dienomis 08:15 (1 reiškia pirmadienį, 0 arba 7 sekmadienį) |
| 0 | 2 | 1 | * | * | Kiekvieno mėnesio pirmą dieną 02:00 |
Reikšmes galite atskirti kableliais (1,15,30), nurodyti intervalą brūkšneliu (5-7) arba periodiškumą naudodami */ (*/2 reiškia kas antrą). Rinkitės ramesnį, atsitiktinį laiką, pavyzdžiui, 03:17, o ne lygiai vidurnaktį.
Komanda: pilni keliai
Periodinė užduotis nežino, kuriame kataloge turi pradėti darbą. Todėl visada naudokite pilnus kelius. Jūsų paketas serveryje yra kataloge /home/ ir po jo nurodytas Jūsų DA vartotojo vardas (žiūrėkite Kaip rasti savo serverio pavadinimą ir DA naudotojo vardą).
PHP skripto paleidimas:
/usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/taak.php
Tai naudoja tą pačią PHP versiją, kaip ir Jūsų svetainė, taigi tą, kuri nustatyta Select PHP version (žiūrėkite PHP versijos pasirinkimas (Select PHP version)).
Interneto adreso iškvietimas (pavyzdžiui, jei Jūsų programinė įranga nurodo cron URL):
curl --silent https://www.jouwdomein.nl/cron.php > /dev/null
WordPress: WordPress numatytai paleidžia savo suplanuotas užduotis, kai atvyksta lankytojas. Jei svetainė labai lankoma arba atvirkščiai, turi mažai lankytojų, geriau tai atlikti periodine užduotimi. Tokiu atveju wp-config.php faile įrašykite define('DISABLE_WP_CRON', true); ir sukurkite užduotį, kuri kas 15 minučių paleis /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/gebruikersnaam/domains/jouwdomein.nl/artisan schedule:run. Atkreipkite dėmesį: schedule:run vykdo tik tas užduotis, kurios tiksliai sutampa su cron vykdymo momentu. Jei cron veikia kas 10 minučių, tai užduotis, suplanuota 08:05, niekada nebus įvykdyta.
El. laiškas po kiekvienos užduoties
Jei užduotis pateikia išvestį (tekstą ar klaidos pranešimą), serveris gali ją nusiųsti el. paštu. Tai vyksta tik tuo atveju, jei esate nustatę adresą. Turite tris galimybes:
- Siųsti į savo adresą: spustelėkite SIŲSTI VISŲ PERIODINIŲ UŽDUOČIŲ IŠVESTIS EL. PAŠTU, įveskite el. pašto adresą ir spustelėkite IŠSAUGOTI. Tai galioja visoms Jūsų užduotims. Jei laukelį paliksite tuščią, el. laiškas nebus siunčiamas.
- Be el. laiško vienai užduočiai: kurdami užduotį spustelėkite VENGTI EL. LAIŠKŲ. Tuomet prie Jūsų komandos bus pridėta >/dev/null 2>&1 ir tos užduoties išvestis bus ignoruojama, net jei esate nustatę adresą.
- Išvestis žurnalo faile: prie savo komandos pridėkite >> /home/gebruikersnaam/cron-log.txt 2>&1. Tuomet vėliau Failų tvarkyklėje galėsite peržiūrėti, ką užduotis atliko. Tokį failą retkarčiais išvalykite.

Patarimas: Nustatykite adresą tol, kol testuojate naują užduotį. Taip iš karto matysite, ar ji veikia. Vėliau jį išjunkite arba nukreipkite išvestį į žurnalo failą. Periodinių užduočių el. laiškai įskaičiuojami į Jūsų paketo siuntimo limitą (žiūrėkite Siuntimo limitai ir pranešimas "message limit reached").
Dažniausiai užduodami klausimai
Mano užduotis grąžina klaidą "Could not open input file".
Kelias iki skripto yra neteisingas. Patikrinkite pilną kelią Failų tvarkyklėje: jis turi prasidėti /home/gebruikersnaam/domains/.
Mano skriptas veikia naršyklėje, bet ne kaip periodinė užduotis.
Skriptas, vykdomas per cron, nežino, kurioje svetainėje jis veikia: $_SERVER['SERVER_NAME'] ir $_SERVER['DOCUMENT_ROOT'] bus tušti, o santykiniai keliai include komandoje veiks kitaip. Skripte naudokite pilnus kelius arba iškvieskite skriptą per curl, naudodami interneto adresą.
Ar galiu matyti, kada užduotis buvo įvykdyta?
DirectAdmin to nefiksuoja. Todėl nustatykite, kad užduotis įrašytų savo išvestį į žurnalo failą kartu su data (pavyzdžiui, date >> /home/gebruikersnaam/cron-log.txt kaip pirma komanda, atskirta ;).
Ką reiškia Paleisti per @reboot?
Tokiu atveju užduotis vykdoma tik tada, kai serveris paleidžiamas iš naujo, o ne nustatytu laiku. Svetainei tai beveik niekada nėra reikalinga.
