Веб-сайттар Cron көмегімен жоспарланған тапсырмаларды орындай алады

сағат

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

Мұның бәрін қолмен қадағалап отырудың орнына, автоматты түрде жоспарланатын және орындалатын жұмыс орындарын құру әлдеқайда оңай. Unix негізіндегі жүйелерде бұл Cron көмегімен жүзеге асырылады. Сіз не істеп жатқаныңызды білетін адамдар үшін, егер мен жалған ақпарат таратсам, мені және оқырмандарды оқытудан тартынбаңыз.

Бұл өкінішті, бірақ әдеттегі веб-әзірлеуші ​​Cron-мен мүлдем таныс емес. Олар болса да, веб-хостинг компаниялары көбінесе Cron-ға қол жетімділікті немесе қолдауды қамтамасыз етпейді. Менің хостым - соңғылардың бірі - олар сізге оны пайдалануға мүмкіндік береді, бірақ олар оны қолдамайды.

Крон дегеніміз не?

Cron мағынасы гректің Chronos сөзімен аталған уақыт. Cron Crontab жинақтайтын тапсырмаларды орындау үшін үздіксіз циклде жұмыс істейді (мүмкін сол үшін аталған қойындысыультратор. Бұл тапсырмалар әдетте Cronjobs деп аталады және сіздің сайтыңыздағы сценарийлерге сілтеме жасай алады.

Cron диаграммасын түсіндіру

Crontab-ты қалай орнатуға болады

Cron-ды шынымен іске қосу қиынға соғуы мүмкін, сондықтан мен мұнда не білдім және оны қалай жасадым Егер соратын болса:

  1. Мен сценарийді Twitter-ді тексеру үшін жасадым 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 файлыңызға арналған синтаксис

Жоғарыдағы №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 Пікірлер

  1. 1

    Кронды құру туралы мақалада жақсы айтылған, жұмыс үшін жаңадан келген адам үшін кронды орнатудың ең қиын бөлігі - кронжобтың орындалу аралығын анықтау, ал бірінші кезекте дұрыс емес интервал алу өте ұтымды. Егер сіздің cronjobs уақытыңызды сезінетін болса, жұмыстың орындалу мәртебесі туралы хабардар болып отыру үшін мәртебені қайталау үшін сценарийге бірнеше кодтарды қосқан дұрыс.

  2. 2

    Сәлем Даг,

    Cron жұмысымен жұмыс кезінде ескеру керек бірнеше нәрсе.

    Біріншіден, бірнеше ондаған уақыттан кейін сізде интерфейс, мәліметтер базасы және ағылшын тіліндегі синтаксис болғанын қалайсыз 😉

    Екіншіден, cron жұмысты алдыңғы шақыру аяқталғанына қарамастан, белгіленген уақытта жұмыстан шығарады. Сонымен, минутына бір рет жұмыс жасау, 2 минутты алады, бұл тез арада көптеген жұмыс орындарына әкеледі.

    Әрі қарай, бірдеңе дұрыс болмаса, қате туралы хабарлауға болмайды, сондықтан сіз өзіңіздің қателік туралы есептеріңізді қосуыңыз керек.

    Мен бұларға бірнеше жолмен жүгіндім:
    - cron арқылы іске қосылатын бағдарламаны не іске қосу керектігін анықтау үшін дерекқордан іздеңіз. Оны қалағаныңызға қарай минутына немесе сағатына бір рет іске қосыңыз
    - әрбір сценарийде / tmp файлында «бұғаттау» файлы жасалсын, егер ол бар болса, қайта бастамаңыз, бұл сізге қайталанатын жұмыстардың алдын алады
    - егер сценарий 1 сағаттан асатын құлыптау файлын тапса (немесе сіз қайтыс болдыңыз десе) электрондық пошта арқылы ескерту жіберіңіз
    - жұмыстың сәтсіздігі туралы сценарийден электрондық пошта жіберіп, бірдеңе дұрыс болмай қалғанын біліңіз
    - сіздің қажеттіліктеріңіз бірнеше сценарийден асып кетсе, Flux немесе коммерциялық жоспарлаушылар сияқты құрылымдарды қарау

    Крис

  3. 4

    Сонымен қатар, Linux / Unix жүйелерінің көпшілігінде crontab -e - сіздің crontab-ті өңдеу үшін қолданылатын нәрсені қосамын. Менің ойымша, сіздің хостыңыз (Jumpline) қауіпсіздік мақсатында өзгертілген нұсқаны қолданады.

  4. 5

    Кроннимен танысқан бірінші күн әлі есімде. Мен ол туралы сенімді, әрдайым уақытында болатын, бірақ кейде оның ниеті туралы біраз шатастыратын нәрселер туралы естідім.

    Мен бұл шындық деп таптым, өйткені ол алғашында мен үшін толық құпия болды. Ол туралы сұрағаннан кейін, мен оның қалай жұмыс жасауды ұнататынын тез білдім. Енді, менің өмірімде онсыз бір күн өтіп жатқанын елестете алмаймын. Ол дүниені қызықты етеді және көптеген ауыртпалықтарды менің иығымнан босатады.

    Мен байыпты түрде өзімді тек cron жұмысымен автоматтандыратын нәрсемен тырнаған сияқтымын. Олар шынымен де дамытушылардың ең жақын досы. Егер сіз өзіңіздің серверіңізді басқару үшін CPanel сияқты біреуді қолдансаңыз, бұл крондар жасау үшін әлдеқайда мейірімді интерфейсті ұсынады. Сізге арналған cron сызығын құрастыратын минут, сағат, күн, ай және т.б ашылмалы мәзірлермен толықтырыңыз.

  5. 7

    Мен мұны кез-келген маркетолог қолдануы керек деп білемін ... Бұл қызметті тым «техникалық» болып көрінетіндіктен ұсына алатын адам бар ма?

Сен не ойлайсың?

Бұл сайт спамның төмендеуі үшін Akismet пайдаланады. Деректеріңіздің қалай өңделетінін біліңіз.