Создание, сопровождение и продвижение сайтов на CMS Drupal

Запуск крона (cron)

Cron - по-русски это планировщик задач или крон, как его принято называть в среде разработчиков Друпал, или демон в юниксовых ОС. Как обычно крон предназначен для выполнения заданий с определенной периодичностью.

Запуск крона на хостинге.

В Drupal cron.php требует периодического запуска для нормального функционирования и технического обслуживания модулей. Из стандартных модулей:

  • watchdog надо удалять старые сообщения,
  • search - индексировать ваш сайт,
  • aggregator - собирать новости.

Вообщем работы и забот у крона много. Ряд сторонних модулей так же использует крон.

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

При доступе к хостингу через cpanel, настройка периодического выполнения крона достаточно проста. Далее пару скриншотов, что и где настраивать

Запускаете в Cpanel "Планировщик задач" из раздела "Дополнительные инструменты", выбираете уровень знаний - "Стандартный". Далее в окне вы указываете комманду запуска:

wget -O - -q -t 1 http://sitename/cron.php

и выбираете периодичность ее выполнения. Вы так же можете указать электронную почту, на которую будут приходить уведомнелия о результате выполнения команды.

Настройка запуска cron в cpanel

Последнее время стал популярен модуль запуска крона из среды Друпала http://drupal.org/project/poormanscron . В Drupal 7 он даже включен в ядро, но ряд уважаемых мною специалистов не рекомендуют его использование. Если уж хостинг не позволяет другими способами автоматически запускать крон, то конечно можно использовать и этот.

Не забывайте что cron может прилично нагружать систему и рекомендуется аккуратно настроить периодичность вызова крона. А так же следует по возможности удалить не критичные задачи из выполнения. В частности, для повышения производительности рекомендуется отключить модуль -  Update status.

Ограничение доступа к cron.php

Так как теоретически можно "подвесить" сайт постоянным удаленным запуском cron.php, то необходимо ограничить доступ к cron.php

  • Как вариант предлагается в конце файла .htaccess добавить:
<Files "cron.php">
  Order Deny,Allow
  Deny from all
  Allow from localhost
  Allow from 127.0.0.1
  Allow from xxx.xxx.xxx.xxx
  Allow from yyy.yyy.yyy.yyy
</Files>

при этом xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy - заменить на допустимые IP - адреса удаленного запуска

  • Если на хостинге по каким либо причинам нет доступа к .htaccess, то возможно поможет изменение кода cron.php. Вначале дописать:
<?php
if($_SERVER['REMOTE_ADDR'] !== 'IP сервера')
exit();
?>

Узнать IP-сервера можно:

<?php
var_dump
($_SERVER['REMOTE_ADDR']);
?>

Во втором случае запуск крона будет разрешен только с сервера. Ручной запуск крона так же будет возможен.

Тема вообщем-то не нова, это скорее напоминалка для самого себя

Полезные ссылки: http://drupal.org/cron