Կայքերը կարող են գործարկել պլանային առաջադրանքներ Cron- ի միջոցով

ժամացույց

Մենք աշխատանքում ունենք ավելորդ մոնիտորինգի մի շարք համակարգեր, որոնք պարբերաբար կատարում են գործընթացներ: Ոմանք վազում են ամեն րոպե, ոմանք ՝ գիշերը մեկ անգամ ՝ կախված նրանից, թե ինչ են անում: Օրինակ, մենք կարող ենք կատարել մի սցենար, որը արտահանում է բոլոր հաճախորդներին, ովքեր 30 օրվա ընթացքում գնում չեն կատարել, նրանց կտրոն ուղարկելու համար:

Փոխանակ այդ բոլորով ձեռքով հետևելու, շատ ավելի հեշտ է ստեղծել այնպիսի աշխատատեղեր, որոնք ավտոմատ կերպով պլանավորվում և իրականացվում են: Unix- ի վրա հիմնված համակարգերի վրա դա հաջողվում է իրականացնել Cron- ի միջոցով: Ձեզ համար մարդիկ, ովքեր գիտեն, թե ինչ եք անում, ազատորեն կրթեք ինձ և ընթերցողներին, եթե ես ապատեղեկատվություն եմ նետում:

Unավալի է, բայց տիպիկ վեբ մշակողը ընդհանրապես ծանոթ չէ Cron- ին: Նույնիսկ եթե դրանք կան, վեբ հոստինգի ընկերությունները հաճախ չեն մատակարարում Cron- ի մուտքը կամ աջակցությունը: Իմ հաղորդավարը վերջիններից մեկն է. Նրանք թույլ են տալիս օգտագործել այն, բայց չեն աջակցում:

Ի՞նչ է Քրոնը:

Cron անվանվել է հունական Chronos բառի համար, այսինքն ժամանակ, Cron- ը վազում է շարունակական օղակում `գործարկելու այն առաջադրանքները, որոնք կուտակված են Crontab- ի կողմից (գուցե հենց դրա համար է կոչված) ականջակալուլատոր Այդ խնդիրները սովորաբար նշվում են որպես Cronjobs և կարող են հղումներ կատարել ձեր կայքում:

Cron դիագրամի բացատրություն

Ինչպե՞ս կարգավորել Crontab- ը

Cron- ին իրոք առաջադրելը կարող է դժվար լինել, ուստի ահա թե ինչ եմ սովորել և ինչպես եմ դա արել Եթե ​​ծծում է:

  1. Ես ստեղծեցի իմ սցենարը ՝ Twitter- ի ստուգման համար API տեսնելու համար որևէ մեկը պատասխանե՞լ է @ifsuck, Ես այդ հաղորդագրությունները համեմատեցի կայքում արդեն իսկ պահված հաղորդագրությունների հետ `մուտքագրելով ցանկացած նորը:
  2. Երբ սցենարն աշխատում էր, ես թույլ տվեցի, որ Օգտագործողը կատարի սցենարը (744) և սցենարի հղումը ավելացնեմ իմ Cronjob ֆայլում ՝ ավելի ուշ այդ մասին:
  3. Դրանից հետո ես ստիպված էի մուտք գործել իմ կայք SSH- ի միջոցով: Mac- ի վրա դա տերմինալի բացումն ու մուտքագրումն էր SSH օգտվողի անուն @ domain.com որտեղ օգտագործողի անունն այն օգտագործողի անունն էր, որը ես ցանկանում էի օգտագործել, իսկ տիրույթը `կայքը: Դրանից հետո ինձ հուշեցին և տվեցին գաղտնաբառը:
  4. Դրանից հետո ես փորձեցի գործարկել սցենարը անմիջապես հրամանի տողից ՝ սերվերի վրա մուտքագրելով ֆայլի անունը և հարաբերական ուղին. /var/www/html/myscript.php
  5. Երբ ճիշտ ստացվեց, ես ֆայլի առաջին տողում ավելացրի անհրաժեշտ Unix կոդը. #! / usr / bin / php -q , Կարծում եմ, սա պարզապես ասում է Unix- ին օգտագործել PHP- ն `սցենարը կատարելու համար:
  6. Տերմինալի հրամանի տողում ես մուտքագրեցի crontab (գուցե մյուսներին անհրաժեշտ է մուտքագրել crontab -e) և հարվածել enter…, և ահա այն ամենը, ինչ անհրաժեշտ էր:

Ձևագիր ձեր Cronjob ֆայլի համար

Ինչ վերաբերում է վերը նշված # 2-ին, Cron- ը օգտագործում է հնարամիտ սխեմա `որոշելու, թե երբ են կատարվելու ձեր սցենարները: Փաստորեն, դուք իրականում կարող եք պատճենել և տեղադրել այն ձեր Cronfile- ում (իմ տանտիրոջ վրա այն գտնվում է այստեղ / var / spool / cron / ֆայլի անվան հետ նույնն է, ինչ իմ օգտանունը):

# + —————- րոպե (0 - 59)
# | + ————- ժամ (0 - 23)
# | | + ———- ամսվա օր (1 - 31)
# | | | + ——- ամիս (1 - 12)
# | | | | + —- շաբաթվա օր (0 - 6) (կիրակի = 0 կամ 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Վերը նշվածը կկատարի իմ սցենարը ամեն րոպե: Եթե ​​ես ուզենայի, որ այն գործարկվի միայն մեկ անգամ, ապա ես կցանկանայի, թե ժամից քանի րոպե անց կցանկանայի, որ այն գործարկվեր, այնպես որ, եթե դա լիներ 30 րոպեի նշագծին.

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

Համոզվեք, որ այս ֆայլի թույլտվությունները նույնպես գործարկելի եք դրել: Ես գտա, որ շարահյուսությունը, թույլտվությունները և տերմինալի պատուհանից crontab կատարելը ամենակարևոր գործոններն էին: Ամեն անգամ ֆայլը վերապահելուց հետո ես կգտնեի իմ թույլտվությունները, որոնք նույնպես պետք է վերականգնման:

ԹԱՐՄԱՈՒՄ. Եթե ցանկանում եք ապահովել, որ աշխատանքները վազում են, պարզ եղանակներից մեկն այն է, որ տվյալների շտեմարանի դաշտը թարմացնեք սցենարը վերջին անգամ կատարելու հետ: Եթե ​​դա ավելի հազվադեպ է, կարող եք պարզապես գրել ձեզ ուղարկված էլ-նամակ:

Լրացուցիչ Cron ռեսուրսներ.

Քանի՞ աշխատատեղ կարող եք ավտոմատացնել ՝ օգտագործելով Cron- ը:

8 Comments

  1. 1

    Cron- ի ստեղծման մասին լավ լուսաբանված հոդվածը, որևէ մեկի համար, ով նոր է աշխատում քրոնիկ աշխատանքներում, cron- ի ստեղծման ամենադժվարը cronjob- ի կատարման միջակայքն է պարզելն ու առաջին փորձից սխալ միջակայք ստանալը բավականին սովորական է: Եթե ​​ձեր գործերը ժամանակի նկատմամբ զգայուն են, լավ է սցենարում ներառել որոշ կոդեր `կարգավիճակը արձագանքելու համար, որպեսզի ձեզ տեղեկացնեն աշխատանքի կատարման կարգավիճակի մասին:

  2. 2

    Բարև Դուգ,

    Մի քանի բան հաշվի առնել cron jobs- ի հետ աշխատելիս:

    Նախ, մի քանի տասնյակ հետո կցանկանայիք ունենաք UI, տվյալների բազա և անգլերեն տեսք ունեցող շարահյուսություն

    Երկրորդ, cron- ը աշխատանքից կհեռացնի նշված ժամանակը ՝ անկախ այն բանից, թե աշխատանքի նախորդ կոչումն ավարտված է: Այսպիսով, րոպեում մեկ անգամ գործ վարելը, որը տևում է 2 րոպե, արագորեն կհանգեցնի նույն նույն աշխատանքի վազքի:

    Հաջորդը ՝ սխալների մասին զեկուցմանը կից, երբ ինչ-որ բան սխալ է տեղի ունենում, այնպես որ դուք պետք է ավելացնեք ձեր սեփական սխալի մասին:

    Ես դրանց անդրադարձել եմ մի քանի եղանակով.
    - կիրառումը գործարկել է տվյալների բազան cron look- ի միջոցով ՝ որոշելու համար, թե ինչ է պետք գործարկել: Գործարկել այն մեկ րոպե կամ ժամ մեկ անգամ ՝ կախված նրանից, թե ինչ եք ուզում
    - թող յուրաքանչյուր սցենար ստեղծի «կողպման» ֆայլ / tmp- ում, և եթե այն գոյություն ունի, նորից մի սկսեք, սա կանխում է կրկնօրինակ աշխատանքները, եթե դրանք չեք ցանկանում
    - եթե սցենարը գտնում է, որ կողպման ֆայլը 1 ժամից ավելի հին է (կամ այն, ինչ հուշում է, որ դուք մահացել եք), էլեկտրոնային փոստով նախազգուշացում ուղարկեք
    - թող սցենարը նամակ ուղարկի աշխատանքի ձախողման մասին, որպեսզի իմանաք, որ ինչ-որ բան սխալ է տեղի ունեցել
    - նայեք Flux- ի կամ առևտրային ժամանակացույցերի նման շրջանակների, երբ ձեր կարիքները գերազանցում են մի քանի սցենարներ

    Chris

  3. 4

    Ավելացնեմ նաև, որ Linux / Unix համակարգերի մեծ մասում «crontab -e» - ն այն է, ինչ դուք օգտագործում եք ձեր crontab- ը խմբագրելու համար: Կարծում եմ ՝ ձեր ընդունողը (Jumpline) անվտանգության նկատառումներից ելնելով օգտագործում է փոփոխված տարբերակ:

  4. 5

    Ես դեռ հիշում եմ Քրոննիի հետ հանդիպելու առաջին օրը: Ես նրա մասին բաներ էի լսել, որ նա հուսալի է, միշտ ժամանակին, բայց երբեմն մի քիչ շփոթեցնող իր մտադրությունների մասին:

    Ես գտա, որ դա ճիշտ է, քանի որ նա սկզբում լիակատար առեղծված էր ինձ համար: Նրա շուրջը հարցնելուց հետո ես բավականին արագ հետաքրքրվեցի, թե ինչպես է նա սիրում վիրահատել: Հիմա ես չեմ պատկերացնում, որ իմ կյանքում մի օր անցնի առանց նրա: Նա աշխարհը հուզիչ է դարձնում և ուսերիցս շատ բեռներ է հանում:

    Ամենայն լրջությամբ, ես զգում եմ, որ ես միայն քերծել եմ մակերեսը, ինչով կարող եմ ավտոմատացնել cron jobs- ով: Նրանք իսկապես մշակողների լավագույն ընկերն են: Եթե ​​ձեր սերվերը կառավարելու համար օգտագործում եք CPanel- ի նման մեկը, այն քրոնիկներ ստեղծելու համար շատ ավելի բարեկամական ինտերֆեյս է ապահովում: Լրացրեք ներքևի բաժիններով րոպեների, ժամերի, օրերի, ամիսների և այլնի հետ, որոնք ձեր համար կազմում են cron գիծը:

  5. 7

    Ես անկասկած տեսնում եմ, որ սա մի բան է, որ պետք է օգտագործի յուրաքանչյուր վաճառող… Կա՞ մեկը, ով կարող է մատուցել այս ծառայությունը, քանի որ դա մի փոքր չափազանց «տեխնիկապես» է հնչում:

Ինչ եք կարծում?

Այս կայքը օգտագործում է Akismet- ը սպամի նվազեցման համար: Իմացեք, թե ինչպես է ձեր տվյալները մշակվում.