Вебсайттар Cron менен пландалган тапшырмаларды аткара алат

саат

Бизде бир катар ашыкча мониторинг тутумдары бар, алар процесстерди үзгүлтүксүз жүргүзүп турушат. Айрымдары ар бир мүнөт сайын, кээ бирлери кылган ишине жараша түнү менен бир жолу чуркашат. Мисалы, биз 30 күндүн ичинде сатып алалбаган бардык кардарларга купонду жөнөтүү үчүн экспорттогон сценарийди аткара алабыз.

Булардын бардыгын кол менен көзөмөлдөөгө аракет кылгандан көрө, автоматтык түрдө пландаштырылган жана аткарыла турган жумуш орундарын куруу кыйла жеңилирээк. Unix негизделген системаларда, бул Cron менен ишке ашат. Эмне кылып жатканыңызды билген элдер үчүн, эгер мен кандайдыр бир жалган маалыматтарды ыргытып жиберсем, анда мага жана окурмандарга кайрылыңыз.

Бул өкүнүчтүү, бирок типтүү веб-иштеп чыгуучу Cron менен такыр тааныш эмес. Алар болгон күндө дагы, хостинг компаниялары көбүнчө Cronго мүмкүнчүлүк бербейт же ага колдоо көрсөтүшпөйт. Менин хостум акыркылардын бири - аны колдонууга уруксат беришет, бирок аны колдошпойт.

Крон деген эмне?

Крон грек сөзү Chronos деген мааниде аталган убакыт. Cron Crontab тарабынан топтолгон тапшырмаларды аткаруу үчүн үзгүлтүксүз циклде иштейт (балким аталган) табулатураулатор. Ал тапшырмалар адатта Cronjobs деп аталат жана сиздин сайттагы скрипттерге шилтеме бере алышат.

Cron диаграммасы

Crontabды кантип орнотсом болот

Cronду иш жүзүндө иштетүү кыйынга турушу мүмкүн, андыктан мен эмнени үйрөндүм жана аны кантип жасадым Эгерде Соруп:

  1. Мен сценарийди Твиттердин текшерүүсү үчүн орноттум API кимдир бирөө жооп берген жокпу, билүү үчүн @ifsuck. Ал билдирүүлөрдү веб-сайтта сактап койгон билдирүүлөрүмө салыштырып, жаңыларын киргиздим.
  2. Скрипт иштеп бүткөндөн кийин, мен Колдонуучуга скриптти аткарууга уруксат бердим (744) жана скрипт шилтемесин Cronjob файлыма коштум - кийинчерээк.
  3. Андан кийин SSH аркылуу вебсайтыма киришим керек болчу. Macта, ал Терминалды ачып, терүүнү талап кылган SSH username@domain.com колдонуучу аты мен пайдаланууну каалаган колдонуучу аты жана домен веб-сайт болгон жерде. Андан кийин менден сурашып, сыр сөздү беришти.
  4. Андан кийин файлдагы аталышты жана сервердеги салыштырмалуу жолду терип, буйрук иш-аракетинен скриптти түз иштетүүгө аракет кылдым: /var/www/html/myscript.php
  5. Аны туура иштеп чыккандан кийин, файлдын биринчи сабына керектүү Unix кодун коштум: #! / usr / bin / php -q . Бул Unixке сценарийди аткаруу үчүн PHPди колдонууну сунуш кылат деп ишенем.
  6. Терминал буйрук сабында мен тердим crontab (башкалар териши керек болушу мүмкүн crontab -E) жана enter басып ... жана ошонун бардыгы талап кылынган!

Cronjob File үчүн синтаксис

Жогорудагы # 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

Бул файлга уруксаттарды аткарылуучу деп койгонуңузга ишенип алыңыз! Синтаксис, уруксаттар жана Terminal терезесинен crontabдын иштеши эң маанилүү фактор болгон деп таптым. Файлды кайра сактаган сайын, мен баштапкы абалга келтирилген уруксаттарымды табат элем!

ЖАҢЫРТУУ: Эгер жумуш орундарынын иштешин камсыз кылгыңыз келсе, анда анын жөнөкөй жолунун бири - бул акыркы жолу скрипт иштетилген учурдагы маалымат базасын өркүндөтүү. Эгерде ал сейрек болсо, анда жөн гана өзүңүзгө жиберилген электрондук каттын сценарийин жазып койсоңуз болот.

Кошумча Cron ресурстар:

Cron аркылуу канча жумушту автоматташтыра аласыз?

8 Comments

  1. 1

    Кронду орнотуу боюнча макалада камтылган, кружокторго жаңы келген адам үчүн, кронду орнотуунун эң татаал бөлүгү - кронжабдык аткаруунун аралыгын аныктоо, адегенде туура эмес интервал алуу оңой эмес. Эгерде сиздин cronjobs убакытты сезгич болсо, анда сиз статусту чагылдырган скриптке айрым коддорду кошуп койгонуңуз жакшы, ошондуктан сиз жумуштун аткарылышы жөнүндө кабардар болуп турасыз.

  2. 2

    Салам Даг,

    Cron жумуштары менен иштөөдө бир нече нерсени эске алуу керек.

    Биринчиден, бир нече ондогон кийин, сизде UI, маалымат базасы жана англисче көрүнгөн синтаксис болсоңуз деп тилейсиз 😉

    Экинчиден, cron жумуштун мурунку чакыруусу аяктаганына карабастан, көрсөтүлгөн убакытта жумуштан бошотот. Ошентип, бир жумушту 2 мүнөткө созулган бир мүнөттө бир жолу иштетүү тез эле көп жумушка алып келет.

    Андан кийин, бир нерсе туура эмес болуп жатканда, эч кандай ката жөнүндө кабарлоо болбойт, андыктан өзүңүздүн ката жөнүндө отчетту кошушуңуз керек.

    Мен буга эки жол менен кайрылдым:
    - cron аркылуу иштетилген тиркеме эмнени иштетүү керектигин аныктоо үчүн маалымат базасынан издеши керек. Аны каалаганыңызга жараша мүнөтүнө же саатына бир жолу иштетип коюңуз
    - ар бир скрипт / tmp файлында "кулпу" файлын жаратсын, эгер ал бар болсо, кайра баштабаңыз, бул сиз каалабасаңыз, кайталанган жумуштарды алдын алат
    - эгер сценарийден 1 сааттан ашкан кулпу файлы табылса (же сиз каза болду деп айтсаңыз) электрондук почта билдирүүсүн жөнөтүңүз
    - бир нерсе туура эмес болуп калганын билүү үчүн, сценарий иштен чыкпай калгандыгы жөнүндө электрондук почта билдирүүсүн жөнөтүшү керек
    - муктаждыктарыңыз бир нече сценарийден ашып кетсе, Flux же коммерциялык планировщиктер сыяктуу алкактарды караңыз

    Chris

  3. 4

    Ошондой эле Linux / Unix тутумдарынын көпчүлүгүндө “crontab -e” сиздин crontabды түзөтүү үчүн колдонула тургандыгын кошумчалайм. Менимче, сиздин хостуңуз (Jumpline) коопсуздук максатында өзгөртүлгөн версияны колдонуп жатат.

  4. 5

    Кронни менен таанышкан биринчи күнүм эсимде. Мен ал жөнүндө көп нерселерди укчумун, ал ишенимдүү, ар дайым өз убагында, бирок кээде анын ниети жөнүндө бир аз түшүнүксүз болуп калат.

    Башында ал мен үчүн толук табышмак болгондуктан, мен аны чын деп таптым. Ал жөнүндө сурашкандан кийин, мен анын кандайча иштөөнү жакшы көрөрүн тез эле билдим. Эми, менин жашоомдо ансыз бир күн өтүп кеткенин элестете албайм. Ал дүйнөнү кызыктуу кылат жана менин мойнумдан көптөгөн жүктөрдү кетирет.

    Бардык олуттуу нерселер менен, мен cron жумуштары менен автоматташтыра турган нерсе менен гана жерди тырмап алгандай сезем. Алар чындыгында эле иштеп чыгуучулардын эң жакын досу. Эгер сиз серверди башкаруу үчүн CPanel сыяктуу бирөөнү колдонуп жатсаңыз, анда ал крондорду түзүү үчүн кыйла ыңгайлуу интерфейсти камсыз кылат. Сиз үчүн cron сызыгын курган мүнөт, саат, күн, ай ж.б. ачылуучу менюларды толуктаңыз.

  5. 7

    Мен бул нерсени ар бир маркетолог колдонушу керек деп эсептейм ... Бул кызматты көрсөтө турган адам барбы, анткени ал бир аз “техникалык” окшойт?

Эмне деп ойлойсуң?

Бул сайт спам азайтуу Akismet колдонот. Сиздин комментарий маалымат кандайча иштелишин Үйрөнүү.