Időzített feladattal a weboldal egy adott URL-jét hívhatja meg rendszeresen – például óránként egy importot, éjszakánként egy exportot, vagy percenként egy ütemezőt. A Hidden tárhelyen az időzített feladatok URL-hívás alapúak: a megadott időpontokban egy külső ütemező szolgáltatás meghívja a weboldal egy címét, mintha egy látogató nyitná meg.
Hogyan működik?
- Ön megad egy URL-t (pl.
https://example.hu/cron/import.php?key=...) és egy crontab-kifejezést (mikor fusson). - A megadott időpontokban az ütemező meghívja az URL-t, és naplózza az eredményt (időpont, státusz, futási idő, a válasz tartalma).
- Mivel a hívás a weboldalon keresztül, HTTP-n érkezik, a feladatra ugyanazok a korlátok vonatkoznak, mint egy böngészős kérésre (PHP-futási idő, a Cloudflare 100 másodperces időkorlátja).
- Klasszikus, szerveroldali
crontab(parancssori szkript közvetlen futtatása) megosztott tárhelyen nincs.
Időzített feladat létrehozása a vezérlőpultban
- Lépjen be az admin.hidden.hu felületre, és nyissa meg a Cron menüt.
- Az Új időzített futás blokkban adja meg:
- Url: a meghívandó teljes cím,
https://-sel. - Crontab: az ütemezés, pl.
0 3 * * *(minden nap 3:00-kor). - Szerződés: ha több szerződése van, válassza ki, melyikhez tartozik.
- Url: a meghívandó teljes cím,
- Mentse.
- Nyissa meg a feladat részleteit: a rendszer szövegesen elmagyarázza a crontab-kifejezést, és kiírja a következő 5 futás időpontját – ellenőrizze, hogy ez megfelel-e a szándékának.
- Kattintson a Teszt gombra: az ütemező azonnal meghívja az URL-t, és megmutatja a választ. Így rögtön kiderül, ha az URL hibás (pl. 404, 403, 500).
A részleteknél később is látja a futások naplóját (időpont, státusz, futási idő ms-ban, a válasz HTML-tartalma), a feladatot ideiglenesen kikapcsolhatja (az enabled jelölő kivételével), módosíthatja vagy törölheti.
Crontab-kifejezés röviden
Öt mező, szóközzel elválasztva: perc óra nap hónap hét_napja
| Kifejezés | Jelentés |
|---|---|
*/15 * * * * |
15 percenként |
0 * * * * |
minden óra elején |
30 2 * * * |
minden nap 2:30-kor |
0 6,18 * * * |
naponta 6:00-kor és 18:00-kor |
0 4 * * 1 |
minden hétfőn 4:00-kor |
0 1 1 * * |
minden hónap 1-jén 1:00-kor |
Az időpontok magyar idő szerint értendők; a pontos következő futásokat a feladat részleteinél ellenőrizheti.
Korlátok és jó gyakorlat
- Darabszám: a csomagleírásokban szerepel, hány időzített futtatás tartozik a csomaghoz; ha többre van szüksége, kérdezze a supportot.
- Futási idő: egy hívás nem tarthat tovább, mint amit a PHP-beállítások és a Cloudflare engednek – 100 másodperc fölött a kérés biztosan megszakad. Hosszú feladatot bontson kisebb adagokra (pl. hívásonként 500 rekord), és futtassa gyakrabban.
- Ne futtassa feleslegesen gyakran. Percenkénti futtatás csak akkor indokolt, ha tényleg szükséges (pl. Laravel-ütemező). Egy éjszakai szinkronhoz elég naponta egyszer.
- Időzítse csendes órára a nehéz feladatokat (export, import, árösszehasonlító-feed generálása): napközben, csúcsidőben lassíthatják az oldalt. Kerülje a 2:00 és 5:00 közötti időszakot is, mert ekkor fut a napi mentés.
- Védje az URL-t: a cron-végpontot bárki meghívhatja, aki ismeri a címét. Tegyen bele egy hosszú, titkos paramétert (
?key=...), és a kódban ellenőrizze. A végpont ne írjon ki érzékeny adatot. - Az URL-nek léteznie kell, és 200-as választ kell adnia. Átirányítás, 404 vagy 403 esetén a feladat nem fut le.
- Ha az oldal előtt jelszavas védelem, IP-szűrés vagy Cloudflare-challenge áll, az ütemező kérése elakadhat. Ilyenkor a cron-URL-t vegye ki a védelem alól, vagy kérje a support segítségét.
- Párhuzamos futás: ha egy futás tovább tart, mint a két hívás közötti idő, a következő elindulhat, mielőtt az előző véget ért. Használjon zárolást (lock-fájl vagy adatbázis-zár) a kódjában.
WordPress: a wp-cron kiváltása
A WordPress alapból minden oldalbetöltéskor ellenőrzi, van-e esedékes feladat (wp-cron.php). Forgalmas oldalon ez felesleges terhelést, alacsony forgalmú oldalon pedig késve futó feladatokat (pl. ütemezett bejegyzés, WooCommerce-értesítő) okoz. A jobb megoldás:
- A
web/wp-config.php-ba, a „That’s all, stop editing!” sor fölé írja be:define( 'DISABLE_WP_CRON', true ); - A vezérlőpult Cron menüjében vegyen fel egy feladatot:
- Url:
https://example.hu/wp-cron.php?doing_wp_cron - Crontab:
*/15 * * * *(15 percenként; ha nincs időkritikus feladat, elég 30 vagy 60 percenként is)
- Url:
- A Teszt gombbal ellenőrizze, hogy a hívás 200-as választ ad.
Egyes szervereken a vezérlőpultban a domain részleteinél Háttér workerek blokk is megjelenik, ahol a WordPress wp-cron rendszeres futtatása beállítható; ha ezt látja, használhatja az URL-alapú cron helyett.
Laravel és más keretrendszerek
- A Laravel ütemezője (
schedule:run) percenkénti futtatást igényel. URL-alapú cronnal ezt egy védett route-tal oldhatja meg, amely meghívja az ütemezőt (pl.Artisan::call('schedule:run')), és ezt a route-ot hívja percenként a cron. - Ha nem az ütemezőt, hanem egy konkrét feladatot hív, futtassa ritkábban (pl. naponta egyszer).
- Folyamatosan futó queue worker megosztott tárhelyen korlátozottan lehetséges. Egyes szervereken a vezérlőpult Háttér workerek funkciója Laravel queue- és schedule-workert is tud futtatni; ha ez Önnél nem jelenik meg, írjon a supportnak.
- A szerveroldali, parancssori cronhoz hasonló igényt (pl.
php artisan ...közvetlen futtatása) a support egyedileg vizsgálja meg.
Gyakori hibák
| Tünet | Ok | Megoldás |
|---|---|---|
| A napló 404-et mutat | elírt URL, vagy a fájl nem a web/ alatt van |
Ellenőrizze a címet böngészőben; használja a Teszt gombot. |
| 403 / Cloudflare-challenge a válaszban | jelszavas védelem, IP-szűrés vagy biztonsági szabály blokkolja a hívást | Vegye ki a cron-URL-t a védelem alól, vagy kérje a support segítségét. |
| 524 vagy időtúllépés | a feladat 100 mp-nél tovább fut | Bontsa kisebb adagokra, vagy gyorsítsa a feladatot. |
| 301/302 átirányítás | http:// címet adott meg, vagy www/nem-www eltérés |
A végleges, https:// címet adja meg. |
| A feladat lefut, de semmi nem történik | a kód hibára fut | Nézze meg a logs/php.log-ot, és a futási napló válasz-tartalmát. |
| Ütemezett WordPress-bejegyzés nem jelenik meg | DISABLE_WP_CRON be van kapcsolva, de nincs cron beállítva |
Vegye fel a wp-cron feladatot a fentiek szerint. |
| A feladat a vártnál más időpontban fut | hibás crontab-kifejezés | Nézze meg a részleteknél a „következő 5 futás” listát. |
Gyakori kérdések
Be lehet állítani, hogy 30 percenként hívja a wp-cron.php-t? Igen: Cron menü → Url: https://example.hu/wp-cron.php?doing_wp_cron, Crontab: */30 * * * *. A wp-config.php-ban kapcsolja ki a beépített wp-cront (DISABLE_WP_CRON).
Futtathatok parancssori PHP-szkriptet (pl. php artisan schedule:run) cronból? Megosztott tárhelyen az időzített feladatok URL-hívással működnek. A parancssori funkciót tegye elérhetővé egy védett URL-en, és azt hívja. Különleges igény esetén írjon a supportnak.
Látom valahol, hogy lefutott-e a feladat? Igen, a Cron menüben a feladat részleteinél a futási naplóban (időpont, státusz, futási idő, válasz).
Miért lassú az oldal minden reggel 6-kor? Ha erre az időre egy nehéz időzített feladat (pl. termékimport, feed-generálás) van ütemezve, az lassíthatja az oldalt. Tegye éjszakára, vagy bontsa kisebb részekre.
Le tudom állítani ideiglenesen a feladatot törlés nélkül? Igen, a feladat részleteinél vegye ki a bekapcsolt (enabled) jelölést, és mentse.
Kapcsolódó oldalak
Nem találta, amit keresett? Kérdezze az asszisztenst, vagy írjon a [email protected] címre.