cron.php: автоматизация запуска

Главные вкладки

Аватар пользователя cristobal-junta cristobal-junta 16 мая 2009 в 1:03

По запросу «drupal cron» Google первой же строчкой выдает вполне разумную и достаточно подробную инструкцию на английском языке. Здесь же в двух словах на русском. Правда, это актуально только в том случае, если к хостингу есть доступ по SSH и разрешено запускать команду crontab.

Сначала нужно убедиться, что по умолчанию в системе установлен ваш любимый редактор. Для этого нужно выполнить команду

$> echo $EDITOR

Если вас не устраивает ее вывод, то нужно выполнить одну из следующих команд:

$> export EDITOR=vim
$> export EDITOR=emacs
$> export EDITOR=nano

А лучше прописать ее в ~/.bashrc.

Теперь убедимся, что в системе установлена программа wget:

$> which wget

Последняя команда выдаст что-то типа /usr/bin/wget. Именно этот путь и нужно будет использовать ниже.

Теперь мы готовы редактировать cron-записи. Для этого служит команда

$> crontab -e

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

Следующая команда будет выполняться каждый день в 20:30 по серверному времени:

30 20 * * * /usr/bin/wget -O - -q -t 1 http://example.com/cron.php >/dev/null 2>&1

А, например, команда

45 * * * * /usr/bin/wget -O - -q -t 1 http://example.com/cron.php >/dev/null 2>&1

 — каждый час, когда пробивает 45 минут (00:45, 01:45, …, 23:45).

Подробное описание формата crontab-файла доступно вот так:

$> man 5 crontab

Немного о параметрах команды wget:

  • « -O - » — всё, что закачал wget будет писаться в файл стандартного вывода (аргумент «-»), т.е., грубо говоря, на экран
  • « >/dev/null 2>&1 » — перенаправляет стандартный вывод в никуда (« >/dev/null »), а поток сообщений об ошибках (« 2 ») в стандартный вывод (« &1 »), т.е. тоже в никуда
  • « -q » — заставить wget работать молча (не информировать пользователя о проделываемой работе)
  • « -t 1 » — выполнить лишь одну (« 1 ») попытку соединения (а не 20, которые установлены по умолчанию)
  • « http://example.com/cron.php » — путь к собственно файлу cron.php; конечно, http://example.com нужно заменить на адрес вашего сайта и, если Drupal установлен не в корне, указать к нему полный путь (например, http://example.com/~example/cron.php)

На мой взгляд, это есть необходимый минимум.

Комментарии

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 21 апреля 2010 в 12:49

Заработало таким образом
У меня cpanel
в админке в меню планировщик cron... прописал

Надо прописать
/usr/bin/wget -O - -q -t 1 http://*site_domen*/cron.php

В результате
/usr/bin/wget -O - -q -t 1 http://*site_domen*/cron.php >/dev/null 2>&1
( >/dev/null 2>&1 система сама добавляет)

При этом снизу в выпадающем меню - указываю каждый день или еще как...