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

ժամացույց

We have a number of redundant monitoring systems at work that regularly execute processes. Some run every minute, some once a night depending on what they are doing. For example, we might execute a script that exports all customers who haven’t made a purchase in 30 days to send them a coupon.

Rather than trying to keep track of all of these by hand, it’s much easier to build jobs that are automatically scheduled and executed. On Unix-based systems, this is accomplished with Cron. For you folks that know what you’re doing, feel free to educate me and the readers if I throw out any disinformation.

It’s unfortunate, but the typical web developer isn’t acquainted with Cron at all. Even if they are, web hosting companies often don’t supply access to, or support of, Cron. My host is one of the latter – they allow you to use it, but they don’t support it.

Ի՞նչ է Քրոնը:

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

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

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

Getting Cron to actually run can be challenging, so here’s what I learned and how I did it for Եթե ​​ծծում է:

  1. I set up my script to check Twitter’s 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 ֆայլի համար

With regard to #2 above, Cron utilizes an ingenious scheme for determining when your scripts will be executed. In fact, you can actually copy and paste this into your Cronfile (on my host, it’s located in / 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

Be sure you set the permissions to this file as executable, too! I found that syntax, permissions, and executing crontab from the Terminal window were the most important factors. Each time I’d resave the file, I’d find my permissions needing reset as well!

UPDATE: If you’d like to ensure the jobs are running, one simply way is to update a database field with the last time the script was run. If it’s more infrequent, you may just script an email sent to yourself.

Լրացուցիչ 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- ը սպամի նվազեցման համար: Իմացեք, թե ինչպես է ձեր տվյալները մշակվում.