Уебсайтовете могат да изпълняват планирани задачи с Cron

часовник

Имаме редица излишни системи за наблюдение на работа, които редовно изпълняват процеси. Някои тичат всяка минута, други веднъж на вечер в зависимост от това, което правят. Например, може да изпълним скрипт, който експортира всички клиенти, които не са направили покупка в рамките на 30 дни, за да им изпратим купон.

Вместо да се опитвате да проследявате всичко това на ръка, е много по-лесно да създавате задачи, които автоматично се планират и изпълняват. В Unix-базирани системи това се постига с Cron. За хората, които знаете какво правите, не се колебайте да образовате мен и читателите, ако изхвърля някаква дезинформация.

За съжаление, но типичният уеб разработчик изобщо не е запознат с Cron. Дори и да са, компаниите за уеб хостинг често не предоставят достъп или поддръжка на Cron. Моят домакин е един от последните - те ви позволяват да го използвате, но не го поддържат.

Какво е Cron?

Cron е кръстен на гръцката дума Chronos, което означава път. Cron работи в непрекъснат цикъл, за да изпълнява задачи, натрупани от Crontab (може би с име на етикетulator. Тези задачи обикновено се наричат ​​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. В командния ред на терминала написах кронтаб (други може да се наложи да напишат кронтаб -е) и натиснете 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:

Колко работни места бихте могли да автоматизирате, използвайки Cron?

8 Коментари

  1. 1

    Добре обхваната статия за настройване на cron, за някой нов за crojobs, най-трудната част при настройката на cron е да се измисли интервалът за изпълнение на cronjob и е съвсем обичайно да се получи грешен интервал при първия опит. Ако вашите cronjobs са чувствителни към времето, добре е да включите някои кодове в скрипта, за да изведете ехото, така че да бъдете информирани за състоянието на изпълнението на заданието.

  2. 2

    Здравей Дъг,

    Няколко неща, които трябва да имате предвид при работа с cron работни места.

    Първо, след няколко дузини ще ви се прииска да имате потребителски интерфейс, база данни и синтаксис на английски език 😉

    Второ, cron ще задейства заданието в определеното време, независимо дали предишното извикване на заданието е завършено. Така че стартирането на работа веднъж в минута, която отнема 2 минути, бързо ще доведе до много от същата работа.

    След това няма почти никакво отчитане на грешки, когато нещо се обърка, така че ще трябва да добавите собствено отчитане на грешки.

    Обърнах се към тях по няколко начина:
    - нека приложението се задейства чрез cron look в база данни, за да се определи какво трябва да се изпълни. Пуснете го веднъж в минута или час в зависимост от това, което искате
    - накарайте всеки скрипт да създаде „заключен“ файл в / tmp и ако съществува, не стартирайте отново, това предотвратява дублиране на задания, ако не ги искате
    - ако скриптът намери заключващия файл, по-стар от 1 час (или каквото и да предполага, че сте починали), изпратете предупреждение по имейл
    - нека скриптът изпрати имейл при неуспех на работата, за да знаете, че нещо се е объркало
    - погледнете рамки като Flux или комерсиални планиращи програми, когато вашите нужди надхвърлят няколко скрипта

    Крис

  3. 4

    Ще добавя също така, че в повечето Linux / Unix системи „crontab -e“ е това, което използвате за редактиране на вашия crontab. Мисля, че вашият хост (Jumpline) използва модифицирана версия от съображения за сигурност.

  4. 5

    Все още помня първия ден, в който срещнах Крони. Бях чувал неща за нея, че беше надеждна, винаги навреме, но понякога малко объркваща за намеренията си.

    Открих, че това е вярно, тъй като в началото тя беше пълна загадка за мен. След като се разпитах за нея, разбрах доста бързо как обича да оперира. Сега не мога да си представя ден, който да минава без нея в живота ми. Тя прави светското вълнуващо и вдига много тежести от раменете ми.

    Напълно сериозно се чувствам сякаш съм надраскал повърхността само с онова, което мога да автоматизирам с cron работни места. Те наистина са най-добрият приятел на разработчиците. Ако използвате някой като CPanel за управление на вашия сървър, той осигурява много по-приятелски интерфейс за създаване на кронове. В комплект с падащи менюта за минута, час, ден, месец и т.н., които изграждат линията cron за вас.

  5. 7

    Определено виждам, че това е нещо, което всеки маркетолог трябва да използва ... Има ли някой, който може да предостави тази услуга, защото звучи твърде „технично“?

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.