Elysia cron – "crontab-like" расширение возможностей крона

28.02.2011
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin
Автор:

Скрипт cron.php используется в Друпале для выполнения поиска (индексации контента), отправки писем подписчикам, сбора rss-фидов, удаления "древней" статистики и т.д. Модули сами могут давать задания для выполнения по расписанию.

На drupal.org присутствует немалое количество модулей, которые позволяют тем или иным образом взаимодействовать со скриптом крона. Наиболее популярными среди них являются: SuperCron и Poormanscron. Первый имеет неплохой набор настроек для автоматизации и планирования крон-задач и является очень перспективным, а второй - что касается настроек - может похвастаться только интервалом запуска скрипта cron.php.&n bsp; На мой взгляд, модуль Elysia cron - наиболее правильный и удобный, ведь этот модуль, благодаря своей исключительной гибкости и юзабельности уделывает конкурентов по-взрослому. Уникальность его состоит в наличии API, и в конфигурировании в виде unix-crontab синтаксиса (фича состоит в возможности планирования времени выполнения для каждого задания отдельно).  Преимуществами модуля являются:

  • возможность расширенного планирования для крон-процедур других модулей, при чем для каждого отдельно ("тяжелые" задачи будут выполнятся реже, а "легкие" чаще);
  • возможность отключать определенные процедуры, в случае их ненадобности;
  • возможность принудительного запуска конкретных крон-процедур;
  • возможность создания групп (каналов) процедур;
  • удобный интерфейс;
  • возможность создания своей крон-задачи непосредственно с пользовательского интерфейса;
  • существенный прирост производительности.

И это далеко не все фичи данного модуля. Подробнее с ними можно ознакомится, перейдя на страницу модуля: http://drupal.org/project/elysia_cron.

По умолчанию Elysia cron будет выполнять задачи последовательно (в одном канале) раз в час. Такое его поведение можно изменить на странице /admin/build/cron/settings.

При стандартной установке Elysia cron будет выполняться при запуске стандартного друпаловского cron.php. Но это вызовет накладки, плохо сказывающиеся на производительности (например управление кешем переменных (с таблицы variable)). С тем, чтобы избежать накладок и улучшить быстродействие, можно заменить файл cron.php, который лежит в корне сайта на такой же файл с папки модуля Elysia cron. В этом случае важно не забыть НЕ обновлять скрипт крона при апгрейде Друпала. Или же можно вызывать крон модуля непосредственно с кронтаба.

В модуле присутствует несложный API, который позволяет:

  • определять больше одной процедуры в модуле;
  • определять разные правила планирования для каждой процедуры;
  • добавлять описание для процедуры.

Для этого нужно вызвать hook_cronapi:

function module_cronapi($op, $job = NULL) { 
  ... 
}

Переменная $op принимает три значения:

    1. ‘list’ – для определения уникальных идентификаторов процедур и их описания;
    2. ‘rule’ – для определения правила планирования (времени выполнения) процедуры;
    3. ‘execute’ – собственно сама процедура.

Например:

function module_cronapi($op, $job = NULL) { 
  switch ($op) { 
    case 'list': 
      return array( 
        'module_process_queue' => 'Process queue of new data',
        'module_send_summary_mail' => 'Send summary of data processed'
      ); 

    case 'rule': 
      if ($job == 'module_process_queue') return '0 * * * *';
      else return '0 1 * * *'; 
    case 'execute': 
      if ($job == 'module_process_queue') { 
        ... do the job ... 
      } 

      // For example, module will be sending e-mails 
      // function (below) 
  } 
} 

  

function module_send_summary_mail() { 
  ... execution procedure code ... 
}

Кроме этого, Elysia cron API реализует поддержку стандартных хуков крона - даже без их объявления в hook_cronapi(). Хотя описание и расписание для этих процедур можно определить самостоятельно:

function module_cronapi($op, $job = NULL) { 
  switch ($op) { 
    case 'list': 
      return array( 
        'module_cron' => 'Standard cron process', 
      ); 

    case 'rule': 
      return '*/15 * * * *'; 
  } 
} 


function module_cron() { 
  ... 
  // This is standard cron's hook 
  // by default it will be executed every 15 minutes 
  ... 
}

Вывод: модуль Elysia cron можно назвать достаточно гибким, универсальным и весьма полезным инструментом для управления регулярными процедурами на вашем сайте. На данный момент - это, выбор также и нашей компании по разработке сайтов InternetDevels!

1 vote, Rating: 5
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin

Также по теме

1

Во-первых, что такое Apache Solr?

Apache Solr - это расширяемая поисковая платформа с открытым исходным кодом от проекта Apache Lucene. 

2

На серверах с nginx в качестве фронтенда и Apache в качестве бэкенда часто можно увидеть такую ошибку. Обычно думают, что проблема в nginx и начинают его уверенно...

4

При разработке одного сайта по недвижимости мы по запросу клиента импортировали в таксономию базу данных всех городов мира. И оказалось, что Hierarchical Select не...

5

Очень полезный модулечек, который позволят вставлять FileField поля прямо в текстовый редактор. Например, в процессе написания данного текста была нажата кнопочка Insert, и появилась вот такая...

Need a quote? Let's discuss the project

Are you looking for someone to help you with your Drupal Web Development needs? Let’s get in touch and discuss the requirements of your project. We would love to hear from you.

Join the people who have already subscribed!

Want to be aware of important and interesting things happening? We will inform you about new blog posts on Drupal development, design, QA testing and more, as well news about Drupal events.

No charge. Unsubscribe anytime