Блог студии веб-дизайна «Make a Site» Дизайн, верстка, программирование, наполнение и раскрутка сайтов.

Планировщик заданий Cron – выполнение скриптов в назначенное время

Операционная система Unix позволяет использовать планировщик заданий Cron для отложенного выполнения скриптов. Главной задачей Cron является выполнение скриптов по созданному пользователем расписанию.

Планировщик заданий Cron – выполнение скриптов в назначенное время
Содержание статьи

Зачем нужен Cron

filesЛюбой сайт представляет собой набор файлов и папок, которые содержат в себе исполняемые скрипты, а так же различную мультимедийную информацию, которая в данный момент нас не интересует.

Прежде всего, речь идет о служебных файлах, которые обеспечивают работу системы. Каждый файл отвечает за функции, которые были возложены на него разработчиком.

Например, файл auth.php отвечает за авторизацию пользователей, файл 404.php обеспечивает корректную обработку 404 ошибки, отсылая необходимые заголовки. Примеров можно привести сколько угодно, но мы этого делать не станем.

Хочется отметить тот факт, что все файлы, из которых состоит система администрирования хранятся на сервере сайта. Как только на сайт заходит очередной посетитель, запускаются необходимые файлы, обеспечивая должный результат.

scheduleСуществуют операции, которые необходимо выполнять с определенной периодичностью, при этом не пропуская ни одной итерации. Но что же делать, если скрипт нужно выполнять каждые 15 минут, а посетители заходят на еще не раскрученный сайт с периодичностью 1-2 посетителя каждые 3 часа. Как раз для того, чтобы не ждать посетителя для запуска необходимого скрипта и существует планировщик заданий Cron.

Скрипты, которые иногда требуется выполнять по расписанию могут носить различный характер, например:

  • автоматическая рассылка по воскресеньям;
  • обновление рейтинга каждый час;
  • регулярное индексирование новых страниц для поиска;
  • внесение статичных файлов в кеш.

Приведены лишь некоторые примеры, которые сходу пришли в голову. На самом деле заданий может быть масса и перечисленными дело конечно не ограничивается.

Cron как раз нужен для организации выполнения всех необходимых скриптов по расписанию. Довольно часто имеет смысл проводить автоматические работы на сервере именно в ночное время, когда нагрузка на сервер минимальна, например в 3 часа ночи.

Как настраивать Cron

optimizationПрежде всего, вам нужно понять, какие файлы нужно запускать по расписанию и подготовить их. Если вы используете в файлах относительные пути, то самым простым вариантом будет заменить их на абсолютные, т. к., например, $_SERVER['DOCUMENT_ROOT'] будет отличаться.

Настройка Cron производится через unix shell. Для подключения можно воспользоваться доступом по SSH и программой Putty, которую мы рассмотрим чуть позже.

Cron позволяет задать периодичность выполнения скрипта с точность до минуты. Доступные интервалы использования планировщика Cron приводятся в этом списке:

  • минуты;
  • часы;
  • дни;
  • дни недели;
  • месяцы.

Как видите, возможности ничем не ограничены и вы можете настроить Cron таким образом, что задания будут выполняться, например, каждую минуту с 2 до 3 часов ночи по понедельникам в январе, феврале и марте.

А теперь давайте рассмотрим конструкцию Cron немного детальней.

<значение №1> <значение №2> <значение №3> <значение №4> <значение №5> <выполняемый скрипт>

  • значение №1 – минуты (от 1 до 59);
  • значение №2 – часы (от 0 до 23);
  • значение №3 – дни месяца (от 1 до 31);
  • значение №4 – порядковый номер месяца (от 1 до 12);
  • значение №5 – день недели (от 1 до 7, где 1 – Понедельник, 2 – Вторник и т. д.).

Универсальность и гибкость настройки кроется в том, что вы можете не только указать в качестве значения одно число, но и интервал или же перечислить несколько значений через запятую. Таким образом можно создавать любые расписания, которые только могут прийти вам в голову.

Примеры использования Cron

Самый простой пример Cron будет выглядеть следующим образом:

0 */6 * * * /usr/bin/php /home/username/public_html/script.php

Ваш скрипт (script.php) будет выполняться каждый день ровно в 0 минут каждые 6 часов.

А теперь давайте рассмотрим и другие примеры использования Cron:

0 */1 * * * /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться каждый час в 0 минут.

0/15 * * * * /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться каждые 15 минут.

0/30 * * * 1 /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться каждые 30 минут по понедельникам.

45 2 * * 7 /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться по воскресеньям ровно в 2 часа ночи 45 минут.

13 13 13 * 5 /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться только по пятницам, 13-го числа, в 13 часов, 13 минут.

* 2,3,4 * * * /usr/bin/php /home/username/public_html/script.php – скрипт будет выполняться каждый день в 2, 3 и 4 часа ночи.

Использование Putty для настройки Cron

puttyНаиболее удобным вариантом настройки Cron является использование программы Putty, благодаря которой вы можете осуществить SSH соединение с вашим сервером и внести изменения в планировщик.

Сначала введите адрес сервера, а затем логин и пароль для доступа к shell;
попав в систему, введите команду crontab -e и нажмите Enter;
для написания текста нужно нажать i, а затем вводить текст;
удалить символы можно нажав Esc, а затем x;
выйти, не сохраняя изменений, можно нажав Esc, затем ввести :q! и Enter;
выход с сохранением изменений: Esc, затем :wq и Enter.

Каждый сценарий нужно писать с новой строки. Даже если у вас по расписанию будет выполняться всего один скрипт, после единственной строки нужно перевести каретку на следующую строку, нажав Enter, иначе ничего работать не будет.

Генератор Cron

crontab-generatorЕсли рассмотренных примеров вам оказалось недостаточно и вы все еще смутно представляете, как описать то или иное расписание, используя 5 рассмотренных значений, вы можете воспользоваться сервисом генерации Cron на сайте crontab-generator.org. С помощью этого удобного сервиса вы сможете создать любой сценарий на ваш вкус с потрясающей гибкостью.

Указанный сервис генерации сценариев Cron на английском языке, но это не должно вас пугать, т. к. там все понятно на интуитивном уровне. Обращаем ваше внимание, что полученный с помощью генератора Cron результат вы не сможете просто скопировать и вставить в интерфейсе Putty. Все равно вам придется ввести все данные вручную, т. к. это вам не обычный редактор, и для начала придется немного освоиться, потратив 15 минут на освоение системы.





Предыдущая статья:
Отправка почты без SMTP. PHP функция отправки на основе mail()

Читайте также:
Особенности использования планшетов и смартфонов для просмотра веб-страниц

Возможно, вам это интересно:



Блог студии веб-дизайна «Make a Site».
Дизайн, верстка, программирование, наполнение и раскрутка сайтов.

Текущий проект: «Stream Booster» — раскрутка Twitch и YouTube каналов

Студия веб-дизайна «Make a site»