Cron php

Часто для тех или иных нужд, вебмастеру нужно периодически запускать на выполнение некоторые скрипты. Зачем это нужно? Причин миллионы - начиная от обновления новостей или автоматической ежедневной рассылки и заканчивая системным резервным копированием важных данных - пользовательским бекапом. Операционная система Unix предоставляет возможность автоматически выполнять произвольные скрипты в указанное время. Для этого используется программа cron. Она получает инструкции от пользователя и производит необходимые выполнения задач - автоматический запуск скриптов пользователя. Стоит лишь заметить, что данная опция зависит от хостера - не у всех хостеров присутствует cron. Но он имеется у большинства компаний, лишь мелкие фирмы пренебрегают данным сервисом.

Настройка cron для выполнения php, perl и прочих скриптов.

Как правило, все зависит от конкретного хостера, а вообще существует два метода настройки cron:

- напрямую, например через unix shell;
- при помощи web-интерфейса;

Сейчас мы подробней рассмотрим каждый метод.

Настройка cron через unix shell

Опцию данной настройки обычно предоставляют достаточно продвинутые хостеры. Но иногда наоборот - ленивые, те, кому лень устанавливать web-интерфейс. Как правило, если хостинг предоставляет unix shell для настройки cron, то служба поддержки хостинга предоставит Вам исчерпывающую документацию по своей версии данной утилиты. Однако давайте рассмотрим общие принципы. Итак, команда, вызывающая окно настройки cron через unix shell это обычно crontab -e. После чего открывается текстовый редактор, в который нужно записывать сценарии автоматического выполнения скриптов. Самый просто сценарий состоит из даты и пути к скрипту. Дата характеризируется следующими показателями:

- минуты - число от 0 до 59
- часы - число от 0 до 23
- день месяца - число от 1 до 31
- номер месяца в году - число от 1 до 12
- день недели - число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Общий вид сценария: время1 время2 время3 время4 время5 команда - путь скрипта и директивы настроек

Время1, время2, ... - соответственно минуты, часы...

При этом любое совпадение времени характеризуется символом "звездочка" - *. Например, если мы хотим чтобы каждый понедельник в 1:30 запускался скрипт, расположенный по адресу "/home/site/script.php", нам необходимо добавить следующую запись:

30 1 * * 1 /home/site/script.php

Как видите, все просто, первое число это минуты - когда на часах 30 минут, второе - часы, т.е. уже не каждый час, а только в 1 час ночи, 3 и 4 символы - *, значит, мы даем знать что условие действительно в любой день месяца, в любой месяц и последний, 5-й символ даты показывает, что нас интересует только понедельник (1-Пн). Вот так и выходит, что в 1:30 по понедельникам будет запускаться на выполнение скрипт /home/site/script.php.

Также существует команда, указывающая логическое "каждые". Например, если в поле часов прописать 3, это будет означать каждый 3-й час ночи. А что делать, если нам нужно просто каждый 3-й час? Такая конструкция имеет вид: */3 - т.е. * показывает что "каждый", а / указывает на цифровую характеристику - и уже не каждый час, а каждый третий час.

В дополнение хочу заметить, что не всегда интересуют результаты работы скрипта, иногда важна и его выдача - т.е. то, что можно увидеть, если открыть скрипт в браузере. И данную выдачу скриптов при автоматическом их запуске можно получать! Достаточно лишь дописать строчку:

MAILTO=мой_адрес@почты.ком

И вы будите получать выдачу скрипта на указанный адрес e-mail.

Настройка cron при помощи web-интерфейса

Ну тут вообще нечего беспокоиться. Вам можно только позавидовать, если Вы имеете хостинг с cron, который позволяет настройку через web-интерфейс. Данный процесс представляет из себя просто заполнение формы, где Вы указываете в соответствующих полях, необходимое время и дату выполнения, указываете скрипт, при желании e-mail для получения выдачи.

Несмотря на то, что web-интерфейсы очень просты и удобны, многие предпочитают использовать unix shell для настройки cron. Что ж, можно только дать дополнительный "+" хостингам, предоставляющим как непосредственную настройку crontab вручную, так и посредствами web-интерфейса.