cPanel cron job beállítása: útmutató az automatizált feladatokhoz

6 perc olvasás

Egy weboldal mögött sok ismétlődő feladat fut: hírlevelek kiküldése, ütemezett bejegyzések megjelenése, webáruházi készletszinkron, ideiglenes fájlok törlése, mentések, jelentések. Ezeket nem kell kézzel indítani: a cron a Linux szerverek időzítője, amely a megadott időpontokban automatikusan lefuttat egy parancsot vagy szkriptet. A cPanel tárhelyeken a Cron Jobs menüpontban grafikus felületen állíthatod be.

Ebben az útmutatóban elmagyarázzuk, hogyan működik a cron és hogyan olvasd az időzítést, lépésről lépésre létrehozunk egy feladatot cPanelben, gyakorlati parancspéldákat adunk, megmutatjuk, hogyan váltsd ki a WordPress beépített időzítőjét, és összeszedjük a gyakori hibákat.

Mire jó a cron?

  • WordPress: ütemezett bejegyzések, bővítmények feladatai, WooCommerce műveletek (lásd lent a wp-cron kiváltását).
  • Webáruház: készlet- és árszinkron a beszállítóval, termékfeed generálása, elhagyott kosár e-mailek.
  • Karbantartás: naplók és ideiglenes fájlok törlése, adatbázis-tisztítás, gyorsítótár-ürítés.
  • Mentés: adatbázis-mentés egy fájlba, amelyet utána letölthetsz vagy továbbküldhetsz.
  • Jelentések és értesítések: napi összesítők, figyelmeztetések.
  • Keretrendszerek ütemezői: a Laravel, a Symfony és sok más keretrendszer egyetlen, percenként futó cron bejegyzésre építi a saját ütemezőjét.

A cron időzítés olvasása

Egy cron bejegyzés öt időmezőből és egy parancsból áll:

*  *  *  *  *  parancs
│  │  │  │  └── a hét napja (0–7, a vasárnap 0 vagy 7)
│  │  │  └───── hónap (1–12)
│  │  └──────── a hónap napja (1–31)
│  └─────────── óra (0–23)
└────────────── perc (0–59)
  • * = minden érték
  • */15 = minden 15. (például 15 percenként)
  • 1,15 = felsorolás
  • 1-5 = tartomány (például hétfőtől péntekig)
Időzítés Jelentése
*/15 * * * * 15 percenként
0 * * * * Minden óra elején
30 2 * * * Minden nap 2:30-kor
0 6 * * 1-5 Hétköznap reggel 6-kor
0 3 * * 0 Vasárnap hajnali 3-kor
0 0 1 * * Minden hónap első napján éjfélkor

Az időpontok a szerver időzónája szerint értendők. A szintaxisról részletesebben a crontab szintaxisát bemutató cikk ír; ha bizonytalan vagy, a crontab.guru oldalon egy időzítést beírva szövegesen is megnézheted, mit jelent.

Cron job létrehozása cPanelben

  1. Lépj be a cPanelbe, és az Advanced (Haladó) csoportban nyisd meg a Cron Jobs menüpontot.
  2. E-mail cím (Cron Email): add meg, hová küldje a rendszer a feladatok kimenetét. Hasznos a beállításnál, utána érdemes elnémítani (lásd lent).
  3. Add New Cron Job: a Common Settings legördülő listából választhatsz kész időzítést (például „Once Per Day”), vagy kézzel kitöltheted az öt mezőt.
  4. Command: add meg a futtatandó parancsot (lásd a példákat).
  5. Kattints az Add New Cron Job gombra. A feladat az alsó listában jelenik meg, ahol később szerkesztheted vagy törölheted.

A lépéseket képekkel a cron job cPanelben való létrehozásáról szóló cikk is bemutatja.

Videó: cPanel Tutorials - Cron Jobs (cPanelTV, angol nyelvű)

Parancspéldák

PHP szkript futtatása (ez a legjobb módszer, mert közvetlenül, a webszerver megkerülésével fut):

/usr/local/bin/php /home/felhasznalonev/public_html/scripts/feladat.php

A felhasznalonev helyére a cPanel felhasználóneved kerül, a pontos útvonalat a Fájlkezelőben láthatod. Az aWh cPanel tárhelyein a /usr/local/bin/php a fiókodhoz a Select PHP Version menüpontban beállított PHP-verziót futtatja.

Egy URL meghívása (ha a feladatot egy weboldal-cím indítja, és nem érhető el közvetlenül fájlként):

curl -s https://cegnev.hu/cron-feladat > /dev/null 2>&1

vagy wget -q -O /dev/null https://cegnev.hu/cron-feladat. Ez lassabb és kevésbé megbízható, mint a közvetlen PHP futtatás, mert a webszerveren és annak időkorlátain keresztül megy.

WP-CLI parancs (ha a csomag tartalmazza az SSH-t és a WP-CLI-t):

cd /home/felhasznalonev/public_html && wp cron event run --due-now > /dev/null 2>&1

Laravel ütemező:

cd /home/felhasznalonev/projekt && /usr/local/bin/php artisan schedule:run > /dev/null 2>&1

A WordPress wp-cron kiváltása

A WordPress nem a szerver cronját használja, hanem egy saját, „álcron” rendszert: minden oldalbetöltéskor megnézi, van-e esedékes feladat, és ha igen, elindítja. Ennek két hátránya van: kis forgalmú oldalon a feladatok késnek (ha senki nem látogatja az oldalt, nem futnak le), nagy forgalmú oldalon pedig felesleges terhelést és lassulást okoz.

A megoldás: kapcsold ki a beépített időzítőt, és futtasd a szerver cronjából.

  1. A wp-config.php fájlba, a „That’s all, stop editing!” sor elé írd be:

    define( 'DISABLE_WP_CRON', true );
    
  2. Hozz létre egy cron jobot cPanelben, például 5 vagy 15 percenkénti futással:

    /usr/local/bin/php /home/felhasznalonev/public_html/wp-cron.php > /dev/null 2>&1
    

Webáruházaknál (WooCommerce) az 5 perces gyakoriság jó kiindulás, egyszerű blogoknál a 15 perces is elég. A részletes lépéseket a WP-Cron cPanel cron jobra cseréléséről szóló cikk írja le.

A kimenet kezelése

Alapesetben a cron minden futás kimenetét elküldi a megadott e-mail címre. A beállításnál ez hasznos, de egy 5 percenként futó feladatnál naponta 288 levelet jelentene. Ha a feladat már jól működik, a parancs végére írd:

> /dev/null 2>&1

Ha szeretnéd megőrizni a kimenetet, írd fájlba (>> /home/felhasznalonev/logs/cron.log 2>&1), és időnként ürítsd a naplót, hogy ne teljen be a tárhely.

Hibaelhárítás: ha nem fut le a feladat

  • Rossz útvonal: a cron nem a public_html mappában indul, ezért mindig teljes, abszolút útvonalat adj meg a szkripthez (és ha a szkript relatív útvonalakat használ, előtte cd-vel lépj a mappájába).
  • Rossz PHP: ha a parancs csak php, lehet, hogy nem a várt verziót futtatja; használd a teljes útvonalat.
  • Jogosultság: a szkript legyen olvasható a felhasználód számára; ha közvetlenül futtatható fájlt (shell szkriptet) indítasz, legyen futtatási joga is.
  • Időzítés: ellenőrizd, hogy az öt mező jó sorrendben van-e, és a szerver időzónájában gondolkodtál-e.
  • A szkript maga hibás: futtasd le kézzel SSH-ból vagy a böngészőből, és nézd meg a hibaüzenetet; ideiglenesen kapcsold vissza a kimenet e-mailes küldését.
  • Erőforrás-limit: megosztott tárhelyen a cron is a fiók CPU- és memória-limitjein belül fut. Egy nehéz, hosszan futó feladat elérheti a limitet, vagy lassíthatja a weboldalt; arról, hogyan számít bele a cron és az SSH az erőforrás-limitekbe, tudásbázis cikkünk ír.

Jó gyakorlatok

  • Ne futtass mindent percenként. Gondold végig, milyen gyakran kell valóban lefutnia a feladatnak; a túl sűrű futás a fiók erőforrásait terheli.
  • Szórd szét az időpontokat: ne induljon minden feladat egész órakor, válassz például 2:17-et.
  • Hosszú feladatoknál gondoskodj róla, hogy ne induljon el újra, amíg az előző fut (például egy zárolófájllal vagy a flock paranccsal).
  • Ne tegyél jelszót a parancsba vagy az URL-be; a titkokat a szkript konfigurációs fájljában, a webgyökéren kívül tárold.
  • Védd az URL-ről indítható feladatokat egy titkos kulccsal vagy IP-korlátozással, hogy kívülről ne lehessen tetszés szerint meghívni őket.

Összefoglalás

A cron a weboldalak ismétlődő feladatainak megbízható időzítője. cPanelben a Cron Jobs menüpontban néhány kattintással beállítható; a parancsokban mindig teljes útvonalat használj, a működő feladatok kimenetét némítsd el, WordPressnél pedig váltsd ki a beépített wp-cront a szerver cronjával. Az aWh cPanel tárhelyein a cron jobok minden csomagban elérhetők.

Gyakori kérdések

Milyen gyakran futtathatok cron jobot?

A cron legkisebb egysége egy perc. Megosztott tárhelyen viszont csak akkor futtass percenként feladatot, ha valóban szükséges; a legtöbb feladathoz az 5–15 perces vagy óránkénti gyakoriság elég.

Honnan tudom, hogy lefutott a feladat?

Ideiglenesen hagyd bekapcsolva az e-mailes értesítést, vagy írd a kimenetet egy naplófájlba, és nézd meg a Fájlkezelőben.

Mi a különbség a php és a wget/curl parancs között?

A php parancs közvetlenül, a webszerver megkerülésével futtatja a szkriptet: gyorsabb, és nem vonatkoznak rá a webes időkorlátok. A wget és a curl egy weboldal-címet hív meg, mintha egy látogató nyitná meg; akkor használd, ha a feladat csak URL-en keresztül indítható.

Milyen PHP útvonalat használjak?

Az aWh cPanel tárhelyein a /usr/local/bin/php útvonalat; ez a fiókodhoz beállított PHP-verziót futtatja.

Lassíthatja a weboldalt a cron?

Igen, ha egy nehéz feladat gyakran fut, mert a weboldallal közös erőforrásokat használja. Ütemezd a nehéz feladatokat alacsony forgalmú időszakra, és ne futtasd őket feleslegesen sűrűn.

Kell cron a WordPresshez?

Nem kötelező, a WordPress beépített időzítővel is működik. Nagyobb forgalmú oldalon és webáruháznál viszont érdemes kiváltani a szerver cronjával, mert megbízhatóbb és kevésbé terheli az oldalt.

Vissza a blogra