A webhelyek ütemezett feladatokat futtathatnak a Cron segítségével

óra

Számos redundáns megfigyelő rendszerrel rendelkezünk, amelyek rendszeresen végrehajtják a folyamatokat. Vannak, akik percenként, mások éjszakánként futnak, attól függően, hogy mit csinálnak. Például végrehajthatunk egy szkriptet, amely minden vásárlót exportál, aki 30 napig nem vásárolt, és kupont küldött nekik.

Ahelyett, hogy kézzel próbálná nyomon követni mindezeket, sokkal könnyebb olyan feladatokat létrehozni, amelyek automatikusan ütemezésre és végrehajtásra kerülnek. Unix alapú rendszereken ezt a Cron segítségével valósítják meg. Nektek, akik tudják, mit csinálnak, nyugodtan oktassanak engem és az olvasókat, ha dezinformációt dobok ki.

Sajnálatos, de a tipikus webfejlesztő egyáltalán nem ismeri Cron-t. Még ha vannak is, a webtárhely-társaságok gyakran nem nyújtanak hozzáférést vagy támogatást a Cronhoz. A házigazdám az utóbbiak közé tartozik - lehetővé teszik, hogy használja, de nem támogatják.

Mi az a Cron?

Cron a görög Chronos szóra, azaz idő. A Cron folyamatos ciklusban fut a Crontab által felhalmozott feladatok futtatásához lapulator. Ezeket a feladatokat általában Cronjobs néven emlegetik, és hivatkozhatnak a webhely szkriptjeire.

Cron Diagram Magyarázat

Hogyan állíthatom be a Crontab-ot

Cron tényleges futása nehézkes lehet, ezért íme, amit megtanultam és hogyan tettem Ha Szívni:

  1. Beállítottam a szkriptemet a Twitter-ek ellenőrzésére API hátha válaszolt valaki @szar. Összehasonlítottam ezeket az üzeneteket azokkal az üzenetekkel, amelyeket már elmentettem a weboldalon, és beírtam minden újat.
  2. Miután a szkript működött, engedélyeztem a felhasználó számára a szkript futtatását (744), és hozzáadtam a szkript hivatkozását a Cronjob fájlomhoz - erről később.
  3. Ezután SSH-n keresztül be kellett lépnem a weboldalamra. Mac-en a terminál megnyitása és gépelés kellett SSH felhasználónév@domain.com ahol a felhasználónév az a felhasználónév volt, amelyet használni akartam, és a domain volt a webhely. Ezután megkérték és megadtam a jelszót.
  4. Ezután megkíséreltem futtatni a parancsfájlt közvetlenül a parancssorból, beírva a fájlnevet és a relatív elérési utat a kiszolgálóra: /var/www/html/myscript.php
  5. Miután megfelelően működtem, felvettem a szükséges Unix kódot a fájl első sorába: #! / usr / bin / php -q . Úgy gondolom, hogy ez egyszerűen azt mondja a Unix-nak, hogy használja a PHP-t a szkript végrehajtásához.
  6. A Terminal parancssorba gépeltem crontab (másoknak lehet, hogy gépelniük kell crontab -e) és nyomja meg az Enter billentyűt ... és csak erre volt szükség!

Szintaxis a Cronjob fájlhoz

Ami a fenti # 2-t illeti, a Cron ötletes sémát használ annak meghatározásához, hogy a szkriptek mikor fognak végrehajtódni. Valójában ezt másolhatja és beillesztheti a Cronfile-ba (a gazdagépemen ez található / var / spool / cron / a fájlnevemmel megegyezik a felhasználónevemmel).

# + —————- perc (0 - 59)
# | +————- óra ​​(0 - 23)
# | | +———- a hónap napja (1 - 31)
# | | | +——- hónap (1 - 12)
# | | | | + - a hét napja (0 - 6) (vasárnap = 0 vagy 7)
# | | | | |
* * * * * /var/www/html/myscript.php

A fentiek percenként végrehajtják a szkriptemet. Ha csak azt szeretném, ha óránként egyszer futna, akkor csak annyit tennék az óra után, amennyit szeretnék futni, tehát ha a 30 perces pontnál lenne:

30 * * * * /var/www/html/myscript.php

Győződjön meg arról, hogy a fájl engedélyeit is futtathatóként állította be! Megállapítottam, hogy a legfontosabb tényezők a szintaxis, az engedélyek és a crontab végrehajtása a Terminal ablakból. Valahányszor újra mentettem a fájlt, azt tapasztaltam, hogy az engedélyeim is visszaállításra szorulnak!

FRISSÍTÉS: Ha biztosítani szeretné, hogy a munkák futjanak, az egyik módja az adatbázis-mező frissítése a parancsfájl legutóbbi futtatásával. Ha ez ritkábban fordul elő, akkor egyszerűen szkriptet írhat magának.

További Cron-források:

Hány munkát tudna automatizálni a Cron használatával?

8 Comments

  1. 1

    Jól áttekintett cikk a cron beállításáról, a crojobs számára újak számára a cron beállításának legnehezebb része a cronjob végrehajtási intervallum kitalálása, és meglehetősen gyakori, hogy első próbálkozáskor rossz intervallumot kapunk. Ha a cronjobok időérzékenyek, akkor jó, ha néhány kódot beillesztenek a szkriptbe, hogy visszhangozzák az állapotot, így folyamatosan tájékoztatást kapnak a munka végrehajtásának állapotáról.

  2. 2

    Szia Doug,

    Pár dolgot figyelembe kell venni a cron munkáknál.

    Először, néhány tucat után kívánja, hogy rendelkezzen felhasználói kezelőfelülettel, adatbázissal és angol nyelvű szintaxissal 😉

    Másodszor, a cron a megadott időpontban elbocsátja a munkát, függetlenül attól, hogy a munka korábbi meghívása befejeződött-e. Tehát egy percenként egyszeri, 2 percig tartó munka gyorsan ugyanahhoz a munkához vezet.

    Ezután nincs hibajelentés, ha valami elromlik, ezért hozzá kell adnia saját hibajelentését.

    Párféleképpen foglalkoztam ezekkel:
    - keresse meg az alkalmazást a cron útján egy adatbázisban, hogy meghatározza, mit kell futtatni. Futtassa percenként vagy óránként egyszer, attól függően, hogy mit szeretne
    - mindegyik szkript készítsen egy 'lock' fájlt a / tmp fájlban, és ha létezik, ne kezdje újra, ez megakadályozza a duplikált feladatokat, ha nem szeretné őket
    - ha a szkript megtalálja a zárfájlt, amely 1 óránál régebbi (vagy bármi is azt sugallja, hogy meghalt), küldjön e-mail értesítést
    - kérje a szkriptet e-mail küldéséről a munka sikertelensége esetén, hogy tudja, valami baj történt
    - nézzen meg olyan keretrendszereket, mint a Flux vagy a kereskedelmi ütemezők, amikor az igényei túlmutatnak néhány szkripten

    chris

  3. 4

    Azt is hozzáteszem, hogy a legtöbb Linux / Unix rendszeren a „crontab -e” az, amelyet a crontab szerkesztésére használ. Azt hiszem, a gazdagép (Jumpline) biztonsági okokból módosított verziót használ.

  4. 5

    Még mindig emlékszem az első napra, amikor megismertem Cronnie-t. Olyan dolgokat hallottam róla, hogy megbízható volt, mindig időben, de néha kissé zavaros volt a szándéka.

    Ezt igaznak találtam, mivel eleinte teljes rejtély volt számomra. Miután körülötte kérdeztem, elég hamar utolértem, hogyan szeret működni. Most már nem tudom elképzelni, hogy egy nap telik el nélküle az életemben. Izgalmassá teszi a hétköznapokat, és sok terhet leemel a vállamról.

    Teljes komolysággal úgy érzem, hogy csak azzal karcoltam a felszínt, amit cron munkákkal automatizálni tudok. Ők valóban a fejlesztők legjobb barátai. Ha a CPanel-hez hasonló embert használ a szerver kezeléséhez, az sokkal barátságosabb felületet biztosít a cronok létrehozásához. Percek, órák, napok, hónapok stb. Legördülő menükkel kiegészítve, amelyek felépítik az Ön számára a cron vonalat.

  5. 7

    Határozottan látom, hogy ezt minden marketingszakembernek használnia kell ... Van valaki, aki képes nyújtani ezt a szolgáltatást, mert kissé túl "technikásnak" hangzik?

Mit gondolsz?

Ez az oldal Akismet-et használ a levélszemét csökkentése érdekében. Ismerje meg, hogyan dolgozik a megjegyzésed.