Запуск Cron в Drupal
Запуск Cron в Drupal
Для начала хочу сказать, что статья рассчитана в первую очередь на новичков. Опытным товарищам ничего нового не расскажет. Тех кому интересно милости просим.Итак, что такое этот ваш Cron?
Cron- демон, аналог службы в Windows, применяемый в Unix системах для автоматического выполнения заданий пользователя. Для каждого пользователя cron, в системе заведен свой конфигурационный файл заданий crontab, в котором сказано когда и какие программы запускать от имени этого пользователя. Для чего в Drupal используется cron? Cron необходим для нормальной работы множества модулей требующих периодического обслуживания, что и достигается его использованием. Так, например, модуль search использует его для индексации контента, поскольку на сайте постоянно происходят изменения, модуль должен знать какие что бы отдавать актуальные материалы. Кроме того множество модулей ядра, сторонних модулей, также использует cron для своих нужд. С вопросом для чего ясно, теперь можно перейти к самому важному, к запуску. Итак как же его запустить? Прежде чем выясним это, нужно кое что понять, а именно что дальше мы будем говорить о 2х кронах: первый это системный крон а второй это крон друпала который мы и будем запускать различными способами в том числе и с помощью системного. Cron Drupal представляет собой php файл, находяшийся в корне сайта, его то и нужно запустить. Есть несколько вариантов как это сделать:
1) Вручную.
2) С помощью модуля Drupal'a, Poormanscron.
4) C помощью системного крона.
Далее по пунктам и подробнее.
Запуск вручную
Первый в очереди однако далеко не лучший вариант, так как cron необходимо запускать с некоторой периодичностью, а постоянно делать это руками мало приятно. Делается это просто, достаточно ввести в адресной строке любимого браузера www.ВашСайт.ru/cron.php. Что мы увидим? Пустой лист, те страницу, и как для писателя нет ничего хуже пустого листа так и для сайтостроителя, пустая страница много радости не несет, а посему мы не будем долго медитировать и перейдем сразу к странице www.ВашСайт.ru/admin/reports/status
Запуск с помощью модуля Poormanscron.
Скачайте модуль drupal.org/project/poormanscron. Распакуйте архив в папку modules.
Перейдите на страницу модулей и включите его. Настройки времени обновления находятся по адресу admin/settings/site-information. Выберите нужный интервал обновления. Как работает данный модуль? Poormanscron добавляет на каждую страницу сайта небольшой javascript c указанием времени следующего запуска cron'a. При просмотре страницы он и запускает cron.php
C помощью системного cron'a сервера
Что бы настроить запуск с помощью системы, нужно в файл .crontab, прописать строчку с временем запуска и именем программы которую нужно запустить(в нашем случае это cron.php). Первое что необходимо сделать это убедиться что на вашей системе есть cron и он запущен. Для этого войдем в терминал введем:
ps ax |grep cron
В ответ вы получите что то похожее на:
1107? Ss 0:00 cron
4478 pts/0 S+ 0:00 grep --color=auto cron
Если в выводе терминала присутствует cron, то все нормально
Так же нужно проверить права доступа к файлу который необходимо запускать с помощью cron'a, для пользователя от имени которого планируется запускать скрипт олжны стоять разрешения для выполнения. Поменять права можно с помощью команды chmod.
Как работает системый cron? При загрузке ОС, запускается демон cron и проверяет очередь заданий at и заданий пользователей в файлах crontab, в каталогах При запуске демон идет в каталог /var/splool/cron и проверяет там наличие файлов сrontab, с заданиями для выполнения. Каждый пользователь может иметь только один файл crontab, записей в файле может быть несколько. Рассмотрим формат файла.
Он может содержать записи трех видов: коментарий, задание переменных окружения (MAILTO, PATH, HOME,SHELL,LOGNAME), команда для сron'a.
Комментарий обозначается знаком '#'.
Переменные окружения задаются как <имя_переменной=значение>.
SHELL=/bin/bash означает использовать для запуска команд /bin/bash, если переменная не указана, то значение будет взято из /etc/passwd для пользователя являющимся владельцем файла.
HOME=/ эта переменная определяет корневой каталог для пользователя (параметр не обязательный) При необходимости доступа к специальным свойствам интерпретатора, значения переменных SHELL и HOME можно изменить, не зависимо от того, что прописано в /etc/passwd.
MAILTO=user@gmail.com, здесь указывается куда посылать сообщения об ошибках и результатах выполнения команд.
PATH=/bin:/usr/bin:/usr/local/bin В качестве аргумента через «:» принимаются пути для поиска и запуска нужных программ. Как правило, значение этой переменной различается для простого пользователя и администратора — для того, чтобы разделить их рабочий инструментарий.
LOGNAME=user —содержит имя пользователя.
Использование переменных окружения позволяет настроить настроить среду под свои нужды. Есть еще множество стандартных переменных окружения однако это выходит за рамки этого руководства.
Команда для сron'a, представляет собой шесть полей разделенных пробельными символами. Разделять команды очень важно в противном случае команды выпонятья не будут! Первые пять указание периодичности, шестое, имя запускаемой программы.
поле1 поле2 поле3 поле4 поле5 команда
1. минуты — число от 0 до 59
2. часы — число от 0 до 23
3. дни месяца — число от 1 до 31
4. месяц — число от 1 до 12
5. день недели от 0 до 7 ( Вс. =0 или =7)
Каждому полю можно задать несколько значений, через запятую, либо их диапазон через дефис. Например, чтобы задания выполнялись на 3, 5, 7 минуты нужно в первое поле записать «3,5,7» соответственно, если необходимо задать интервал то — «3-7», в таком случае задание будет выполняться каждую минуту с 3 по 7 минуту включительно.
Символ «*» охватывает весь диапазон значений для конкретного поля. Если указать «*» в поле «часы» то задание будет выполняться каждый час.
Символ '/' задает диапазон с шагом, используется для пропуска в диапазонах. Так '*/5' в поле «часы» будет означать что программа будет запускаться каждые пять часов. Более сложным для понимания является такой пример '5-23/4', он говорит: «запускать в 5, 9, 13, 17, 21 часа».
Теперь непосредственно перейдем к рассмотрению команды запуска cron.php. Здесь несколько вариантов, выбор нужного зависит от предпочтений и от конфгурации
хоста на котором планируется выполнение cron'a. Для этих целей можно использовать wget и lynx. Вот команды которые необходимо записать в файл крона с использованием этих двух программ:
0 * * * * /usr/bin/wget -O — -q www.yoursite.ru/cron.php # wget — программа для скачивания файлов по сети.
0 * * * * /usr/bin/lynx -source www.yoursite.ru/cron.php > /dev/null 2>&1 # lynx- текстовый браузер. Запись >/dev/null 2>&1 подавляет отправку сообщений и ошибок, на стандартный вывод. Необязательно.
Но перед тем как что то редактировать нужно убедиться что указанные программы доступны. Для этого применяется команда which или whereis. Запустите терминал и введите whereis wget, если в ответ вы получите /usr/bin/wget, значит все в порядке.Аналогично и с остальным.
Отредактировать crontab можно с помощью любимого редактора, но ненужно для этого существует специальная программа с одноименным названием, преимущество ее в том что во время редактирования работа демона не прерывается. Программа crontab может запускться с такими параметрами:
-l — выводит содержимое текущего сrontab файла на стандартный вывод.
-r — удаляет текущий файл.
-е — предназначен для редактирования.
-u — пользователь чей crontab необходимо обработать.
Таким образом, вводим crontab -e (если хотим отредактировать файл другого пользователя вводим crontab -u name_user -e) попадаем в редактор, заданный переменной окружения VISUAL или EDITOR. Добавляем нужную строку сохраняемся и выходим.
Данный способ полезен тем что все делается стандартными средствами сервера, и потом разобравшись с работой cron'a вы можете запускать любые программы для переодического выполнения.
0 комментариев