Запуск Cron в Drupal. Запустить крон drupal
Запуск 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. [email protected], здесь указывается куда посылать сообщения об ошибках и результатах выполнения команд. 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 вы можете запускать любые программы для переодического выполнения.
habr.com
Запуск cron в Drupal с произвольной периодичностью
В Drupal, в , периодичность запуска крона (cron) жестко фиксирована и минимальный период составляет один час. Но иногда возникает потребность изменить с помощью cron. Как реализовать свою собственную периодичность запуска cron, отличную от исходной? Редакция от 05.01.2015.
Создан 05.01.2015 14:17:27
Рисунок ниже наглядно иллюстрирует тот факт, что вариантов выбора периодичности запуска cron в Drupal не так уж и много. Все бы и ничего, но у многих возникает проблема разрастания таблицы cache_menu, которую периодически приходится чистить, чтобы не допустить превышения у хостинг- и сайта, см. Модуль DB Maintenance Drupal.
При пиковой нагрузке на сайт таблицу cache_menu приходилось чистить даже вручную с помощью phpMyAdmin, но это, разумеется, не выход. Выход в том, чтобы заставить cron запускаться чаще, хотя бы раз в десять минут, см. рисунок ниже.
Теперь о том, как это сделать. В Drupal имеется замечательный , вот путь к нему - .../modules/system/system.admin.inc. Необходимо открыть его любым или , к примеру gedit, после чего внести в код дополнения, изображенные на рисунках ниже.
0 соответствует «Никогда», 10 - десяти минутам, 60 - одному часу и так далее, т.е. логика тут проста.
Здесь все то же, только в секундах. 10 мин - 600 с, 1 час - 3600 с.
После файл необходимо закачать обратно на хостинг и обязательно очистить кэш Drupal. В итоге выпадающий список Запускать крон каждые будет выглядеть так, как изображено на втором рисунке. Возможны любые другие значения периодичности запуска cron - хоть ежеминутно, для этого потребуется добавить комбинацию 1 мин - 60 с.
Завeршающий этап всего этого мероприятия - изменение модуля DB Maintenance так, как изображено на рисунке ниже.
Единственный недостаток такого способа изменения периодичности запуска cron состоит в том, что при обновлении ядра Drupal до очередной вышедшей его все перечисленные действия придется повторять заново.
.
authorit.ru
Ошибки при проверке обновлений и запуске крона
Добрый день!
Возникли проблемы при поиске обновлений для ядра и модулей и запуске крона, причём я не могу эти ошибки локализовать. При попытке запуска admin/reports/updates/check система напрягается, а потом выдаёт пятисотую ошибку. При этом в admin/reports/updates иногда (!) всё-таки появляются пояснения о том, что проверка обновлений сделана («Последняя проверка: 4 минуты 56 секунд назад», например), но судя по списку, проводится эта проверка не для всего списка модулей — например, для views, который у меня идёт последним в списке, написано «Не найдены доступные версии». Судя по «Отчёту о состоянии», та же проблема и с обновлениями ядра.
1. Я искал по всем доступным логам, но никакой информации об ошибках не нашёл. Что интересно, в admin/reports/status было написано, что крон не выполнялся в течение 19 часов, хотя на web-cron.ru я настроил запуск своего крона раз в час.2. Попробовал запустить cron.php руками, но получал лишь «информативное» сообщение «Ошибка запуска Cron.»3. В результате я сделал вывод, что виноват в ошибках может быть модуль, который я пишу со вчерашнего дня. Он у меня был включен на сайте.4. После отключения своего модуля сделал update.php — пропал simplemenu, крон по-прежнему не запускался.5. Отключил и включил simplemenu, сделал update.php — simplemenu появился, крон запускается, но с ошибками (например, предупреждение «Невозможно обработать RSS-ленту с сайта Liverpool Daily Post в результате "-139715052 ".»), при этом в «Отчёте о состоянии» далеко не сразу появилось сообщение о том, что крон вообще запускался, а обновления ядра и модулей до сих пор проверены не все.
Подскажите, пожалуйста, что следует делать в этом случае? Где искать и как исправлять ошибки? Мой модуль вряд ли мог наворотить всех этих дел, потому что вся его работа — два запроса к базе и создание двух блоков, темизированных под списки. Ни новых таблиц, ни записей в старые он не делает. Модуль, конечно, кривой, но не столько, чтобы создавать подобные проблемы -)
drupal.ru