Fake-cron elméletben
Mit tehetünk, ha tárhelyünkön nem kapunk cron beállítási lehetőséget, viszont szükségünk van automatizált script futtatásra? Rövid cikk következik...
Amennyiben nincs lehetőségünk semmilyen szinten cron jobokat beállítani a tárhelyünkön, úgy megpróbálhatunk egy viszonylag fapados módszert használni.
A módszer lényege, hogy oldalletöltésenként megvizsgáljuk, hogy ideje-e már futtatni a kívánt scriptet. Természetesen több scriptet is futtathatunk adott időközönként, vagy adott időpontokban.
Szükségünk lesz egy fájlra vagy sql táblára ami a futtatandó scripteket és az időpontokat/időközöket tartalmazza.
A scripteket érdemes egy külön mappában tárolni, hasonlóan mintha valós cron jobokat indítanánk.
A folyamat lépésekben:
- Az index fájl legelején indítjuk a fake-cron függvényünket.
- Lekérdezzük időpont alapján, hogy van-e futtatandó script.
- Amennyiben van futtatandó script, úgy azt cUrl hívással érdemes meghívni, mert így a job futásideje nem lesz kihatással az oldalletöltésre.
- Futtatás után számoljuk ki a script következő futásának időpontját és állítsuk is be azt.
Röviden, ebből a 4 lépésből áll a fake-cronunk működése. Azonban van pár dolog amire figyelnünk kell:
- Mivel oldal letöltésenként lefut a fake-cron függvényünk, külön figyelnünk kell arra, hogy nehogy egyszerre többször indítsuk el ugyanazt a scriptet. Ezért amint lehet a futtatandó jobnál jelezzük egy flaggel, hogy az már el van indítva (stop jelzés), illetve a job következő indítási időpont beállításakor ezt a jelző flaget állítsuk vissza futtathatóra (start jelzés).
- Szintén az oldal letöltésenként történő futtatás miatt előfordulhat kis látogatottságnál, hogy nincs oldalletöltés a kérdéses időpontban. Ezért körültekintően tervezzük meg a jobokat, mert lehet, hogy nem pont az elvárt időpontban fognak lefutni.