15. fejezet · 15.1
Időzített feladatok: feladatok automatikus futtatása
Tekintse meg egy rövid videóban
Az időzített feladat (vagy cron job) egy olyan parancs, amelyet a szerver meghatározott időpontokban hajt végre az Ön nevében. Ilyen lehet például egy éjszakánként futó szkript, amely eltávolítja a régi adatokat, egy óránkénti kapcsolat a könyveléssel, vagy a WordPress illetve a Laravel ütemezett feladatai. Ezt az Időzített feladatok menüpontban állíthatja be, a Haladó tulajdonságok alatt.

Szabályok a WebOkénál
A szervert más weboldalakkal közösen használja. Ezért vannak szabályok az időzített feladatokra vonatkozóan:
- Egy feladatot legfeljebb 10 percenként indítson. Ezt mindenkitől kérjük. A szerver ezt nem kényszeríti ki, de egy gyakrabban futó feladat lassítja a szervert Önnek és másoknak is. Ha több feladata van, ne indítsa mindet egyszerre.
- Tartsa röviden a feladatokat. Ha sok dologgal kell foglalkozni, ossza el a munkát több körre.
Feladat létrehozása
- A DirectAdminban a Haladó tulajdonságok alatt kattintson az Időzített feladatok menüpontra.
- Kattintson az IDŐZÍTETT FELADAT LÉTREHOZÁSA gombra.
- A Perc, Óra, A hónap napja, Hónap és A hét napja mezőkben adja meg, mikor fusson a feladat (1). A csillag * jelentése "minden".
- Az időmezők alatt, Az időzített feladat futni fog: (2) résznél közérthető nyelven láthatja, mikor fut a feladat. Ellenőrizze ezt.
- Az Opdracht mezőbe (3) írja be, mi történjen, teljes elérési utakkal (lásd lentebb).
- Nem szeretne e-mailt kapni minden alkalommal? Kattintson a FELESLEGES E-MAILEK MEGELŐZÉSE gombra (4).
- Kattintson a LÉTREHOZÁS gombra (5).

A feladat ezután megjelenik a listában. Ha törölni szeretné, jelölje be (1), majd kattintson a Törlés gombra.

Példák időpontokra
| Perc | Óra | A hónap napja | Hónap | A hét napja | Jelentés |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Minden nap 03:30-kor |
| */10 | * | * | * | * | 10 percenként |
| 0 | * | * | * | * | Minden órában |
| 15 | 8 | * | * | 1-5 | Munkanapokon 08:15-kor (1 a hétfő, 0 vagy 7 a vasárnap) |
| 0 | 2 | 1 | * | * | Minden hónap első napján 02:00-kor |
Az értékeket vesszővel választhatja el (1,15,30), kötőjellel adhat meg tartományt (5-7), és */ jellel intervallumot (*/2 jelentése minden második). Lehetőség szerint válasszon egy csendes, véletlenszerű időpontot, például 03:17-et éjfél helyett.
A parancs: teljes elérési utak
Egy időzített feladat nem tudja, melyik mappából kell indulnia. Ezért mindig teljes elérési utat használjon. A csomagja a szerveren a /home/ mappában található, majd a DA felhasználóneve következik (lásd A szervernév és a DA-felhasználónév megtalálása).
PHP-szkript indítása:
/usr/local/bin/php /home/felhasznalonev/domains/sajatdomain.nl/public_html/taak.php
Ez ugyanazt a PHP-verziót használja, mint a weboldala, tehát a Select PHP version alatt beállított verziót (lásd A PHP-verzió kiválasztása (Select PHP version)).
Egy webcím meghívása (például ha a szoftvere egy cron URL-t ad meg):
curl --silent https://www.sajatdomain.nl/cron.php > /dev/null
WordPress: a WordPress alapértelmezés szerint akkor indítja el az ütemezett feladatait, amikor egy látogató érkezik. Forgalmas oldal esetén, vagy ha kevés a látogató, jobb, ha ezt egy időzített feladattal oldja meg. Ehhez írja be a wp-config.php fájlba: define('DISABLE_WP_CRON', true);, majd hozzon létre egy feladatot, amely 15 percenként elindítja a következőt: /usr/local/bin/php /home/felhasznalonev/domains/sajatdomain.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/felhasznalonev/domains/sajatdomain.nl/artisan schedule:run. Figyelem: a schedule:run csak azokat a feladatokat hajtja végre, amelyek pontosan az időzítés pillanatára esnek. Ha a cron 10 percenként fut, egy 08:05-re ütemezett feladat soha nem fog lefutni.
E-mail minden feladat után
Ha egy feladat kimenetet ad (szöveget vagy hibaüzenetet), a szerver ezt elküldheti e-mailben. Ez csak akkor történik meg, ha beállított egy címet. Három lehetősége van:
- E-mail egy saját címre: kattintson AZ ÖSSZES IDŐZÍTETT FELADAT KIMENETÉNEK ELKÜLDÉSE E-MAILBEN gombra, adjon meg egy e-mail címet, majd kattintson a MENTÉS gombra. Ez minden feladatára érvényes. Ha üresen hagyja a mezőt, nem érkezik e-mail.
- Egyetlen feladathoz nincs e-mail: a létrehozáskor kattintson a FELESLEGES E-MAILEK MEGELŐZÉSE gombra. Ekkor a >/dev/null 2>&1 rész kerül a parancs végére, és az adott feladat kimenete eltűnik, akkor is, ha beállított egy címet.
- Kimenet egy naplófájlba: írja a parancsa végére: >> /home/felhasznalonev/cron-log.txt 2>&1. Ekkor később a Fájlkezelőben megtekintheti, mit csinált a feladat. Időnként tisztítsa meg ezt a fájlt.

Tipp: Állítson be egy e-mail címet, amíg egy új feladatot tesztel. Így azonnal láthatja, hogy működik-e. Utána kapcsolja ki, vagy irányítsa a kimenetet egy naplófájlba. Az időzített feladatok e-mailjei is beleszámítanak a csomagja küldési korlátjába (lásd Küldési limitek és a 'message limit reached' hibaüzenet).
Gyakran ismételt kérdések
A feladatom "Could not open input file" hibát ad.
A szkript elérési útja nem megfelelő. Ellenőrizze a teljes elérési utat a Fájlkezelőben: ennek /home/felhasznalonev/domains/ résszel kell kezdődnie.
A szkriptem a böngészőben működik, de időzített feladatként nem.
Egy olyan szkript, amely cronon keresztül fut, nem tudja, melyik weboldal alatt fut: a $_SERVER['SERVER_NAME'] és a $_SERVER['DOCUMENT_ROOT'] üres, és az include-ban szereplő relatív elérési utak máshogy működnek. Használjon teljes elérési utakat a szkriptben, vagy hívja meg a szkriptet curl segítségével a webcím alapján.
Láthatom, mikor futott egy feladat?
A DirectAdmin ezt nem rögzíti Ön helyett. Ezért érdemes a feladat kimenetét egy naplófájlba íratni, benne a dátummal (például date >> /home/felhasznalonev/cron-log.txt első parancsként, ; jellel elválasztva).
Mit csinál a Futtatás a szerver újraindításakor @reboot?
Ekkor a feladat csak akkor fut, amikor a szerver újraindul, és nem meghatározott időpontokban. Ez egy weboldal esetében szinte sosem szükséges.
