Веб-страниците можат да извршуваат закажани задачи со Cron

часовник

Имаме голем број на вишок системи за следење на работа кои редовно извршуваат процеси. Некои трчаат секоја минута, некои еднаш во ноќта во зависност од тоа што прават. На пример, може да извршиме скрипта што ги извезува сите клиенти кои не извршиле купување во рок од 30 дена за да им испрати купон.

Наместо да се обидувате да ги пратите сите овие рачно, многу е полесно да се градат работни места што автоматски се закажуваат и извршуваат. На системите базирани на Unix, ова се постигнува со Cron. За вас луѓе кои знаат што правите, слободно образувајте ме мене и читателите ако исфрлам дезинформации.

Ateално е, но типичниот веб развивач воопшто не е запознаен со Cron. Дури и ако се такви, компаниите за веб-хостинг често не обезбедуваат пристап до Крон или поддршка на нив. Мојот домаќин е еден од последните - тие ви дозволуваат да го користите, но тие не го поддржуваат.

Што е Крон?

Cron е именуван за грчкиот збор Хронос, што значи време. Крон работи во континуирана јамка за да извршува задачи што ги акумулира Crontab (можеби именувани за таботулатор Тие задачи обично се нарекуваат Cronjobs и можат да се повикуваат на скрипти на вашата страница.

Објаснување на дијаграмот Крон

Како да го поставам Crontab

Да се ​​натера Крон да трча всушност може да биде предизвик, затоа еве што научив и како го направив тоа Ако цица:

  1. Ја поставив мојата скрипта за да ги проверам оние на Твитер 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 / калем / 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?

8 Коментари

  1. 1

    Добро опфатен напис за поставување крон, за некој нов кров, најтешкиот дел во поставувањето крон е да го откриеме интервалот на извршување на кронобот, и прилично е обичен да се добие погрешен интервал на првиот обид. Ако вашите работни места се чувствителни на време, добро е да вклучите неколку кодови во сценариото за да одекнуваат статус, така што ќе бидете информирани за статусот на извршување на работата.

  2. 2

    Здраво Даг,

    Неколку работи што треба да се земат предвид кога работите со cron jobs.

    Прво, по неколку десетици, ќе посакате да имате кориснички интерфејс, база на податоци и синтакса со изглед на англиски јазик

    Второ, cron ќе ја отпушти работата во одреденото време, без оглед на тоа дали претходното повикување на работата е завршено. Значи, водење работа еднаш во минута, што трае 2 минути, брзо ќе доведе до водење на иста работа.

    Следно, следува нема пријавување грешки кога нешто тргне наопаку, така што ќе треба да додадете свое известување за грешка.

    Јас се осврнав на овие на неколку начини:
    - активирајте ја апликацијата преку cron look во базата на податоци за да утврдите што треба да се изврши. Извршете го еднаш во минута или час во зависност од тоа што сакате
    - секоја скрипта нека креира датотека „заклучување“ во / tmp и доколку постои, не започнувајте повторно, ова спречува дупликат работи ако не ги сакате
    - ако скриптата ја пронајде заклучената датотека постара од 1 час (или што сугерира дека сте починале), испратете е-пошта со предупредување
    - нека скриптата испрати е-пошта за неуспех во работата за да знаете дека нешто тргна наопаку
    - погледнете рамки како Flux или комерцијални распоредувачи кога вашите потреби надминуваат неколку скрипти

    Chris

  3. 4

    Исто така, ќе додадам дека на повеќето системи на Linux / Unix, „crontab -e“ е она што го користите за уредување на вашиот crontab. Мислам дека вашиот домаќин (Jumpline) користи изменета верзија од безбедносни причини.

  4. 5

    Сè уште се сеќавам на првиот ден кога ја запознав Крони. Имав слушнато работи за неа, дека е сигурна, секогаш на време, но понекогаш малку збунувачка за нејзините намери.

    Сфатив дека ова е вистина, бидејќи таа на почетокот беше целосна мистерија за мене. Откако прашав околу неа, прилично брзо фатив за тоа како сака да работи. Сега, не можам да замислам ден да помине без неа во мојот живот. Таа ги прави световните возбудливи и крева многу товари од моите рамења.

    Со сета сериозност, се чувствувам како да ја изгребав површината само со она што можам да го автоматизирам со работни места за cron. Тие навистина се најдобар пријател на развивачите. Ако користите некој како CPanel за управување со вашиот сервер, тој обезбедува многу попријателски интерфејс за креирање на crons. Комплетирано со паѓачки менија за минута, час, ден, месец, итн. Што ја гради cron линијата за вас.

  5. 7

    Дефинитивно гледам дека ова е нешто што секој продавач треба да го користи… Дали има некој што може да ја обезбеди оваа услуга затоа што звучи малку „техничко“?

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.