Деякі модулі Drupal вимагають періодичних дій, наприклад очищення лог-файлів, поновлення імпортованих каналів новин тощо. Для цього в кореневому каталозі Drupal є програма cron.php. Власне виконання цієї програми через адресу
http://mysite/cron.php
приводить до виконання перерахованих вище дій модулів Drupal. Однак безпосередньо Drupal не дає можливості налаштувати періодичне виконання програми cron.php. Для цього необхідно:
1) Вручну періодично викликати її у бровзері (див. адресу вище), або через сторінки адміністрування Drupal
http://mysite/admin/logs/status
де є дія ручного запуску cron.
2) Налаштувати на клієнтському комп'ютері деякий персональний розпорядник, який періодично буде запускати бровзер з викликом відповідної адреси.
3) Налаштувати cron на сервері. Cron є розпорядником команд, які виконуються операційною системою. У Linux чи Unix розпорядник команд налаштовується у файлі "crontab". Однак гостери переважно надають допоміжні пакети типу C-Panel для конфігурування сервера, в тому числі і розпорядника команд cron.
Для періодичного виконання програми Drupal cron.php на сервері необхідно задати такі команди
/usr/bin/lynx -source http://mysite/cron.php
або
/usr/bin/wget -O - -q http://mysite/cron.php
При цьому на сервері повинні бути доступними бровзери lynx чи wget. Взагалі рекомендується використати наявні скрипти Drupal, наприклад
scripts/cron-lynx.sh
Цей файл необхідно підредагувати відповідно до своїх потреб. Наприклад, файл cron-lynx.sh містить наступну стрічку:
/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1
у якій необхідно змінити адресу сайту.
Тоді у cron необхідно додати команду такого типу
/home/public_html/scripts/cron-lynx.sh
У деяких випадках не даються права до використання таких бровзерів як wget чи lynx. Тому в Drupal існує альтернативний скрипт, що використовує curl:
scripts/cron-curl.sh
Також можна написати просту PHP-програму, яка буде емулювати доступ бровзера до cron.php, налаштувати cron до виконання цієї програми.
Треба відзначити, що істотним є доступ до cron.php за допомогою бровзера через доменна ім'я сайту. Настійливо не рекомендується запускати цю програму безпосередньо через PHP у командній стрічці. Також необхідно уникати адрес типу localhost або 127.0.0.1. Це пов'язано з тим, що деякі змінні середовища не будуть встановлені коректно, і дії будуть виконані не так як очікується.
4) Використати webcron сервіс (наприклад, http://www.webcron.org). У цьому сервісі можна налаштувати власний cron, який не залежить від налаштувань сервера. Такий варіант виглядає найпрактичнішим, особливо коли необхідно налаштовувати cron для декількох різних сайтів. Одним з недоліків цього сервісу є слабші можливості щодо вказання часу виконання команд. Наприклад, звичайний cron дозволяє вказати час виконання з точністю до хвилини, крім того існують варіанти типу "кожні 12 (6, 4) годин". Webcron сервіс дозволяє вказати час виконання команд лише з точністю до години (дня, тижня, місяця).
Детальніше про налаштування cron для Drupal можна прочитати на http://drupal.org/cron.
Comments
Webcron стає платним
З початком 2009 року сервіс webcron стає платним. Ціна поки-що невелика - близько $1 на рік при виконанні завдання щогодини.
Привіт.Дякую
Привіт.
Дякую за інтересну інформацію, думаю що пригодиться.