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

28.02.2011
Elysiacron –
Автор:

Скрипт cron.php використовується в Друпалі для роботи пошуку (індексації контенту), відправки листів передплатникам, збору rss-фідів, видалення "древньої" статистики і т.д. Модулі самі можуть давати завдання до виконання за розкладом.

На drupal.org існує чимала кількість модулів, які дозволяють так чи інакше взаємодіяти зі скриптом крона. Найпопулярнішими серед таких є SuperCron і Poormanscron. Перший має непоганий набір налаштувань для автоматизації і планування крон-завдань і є досить перспективним, а другий - з  усіх налаштувань - може похвалитися хіба що інтервалом запуску скрипта cron.php. На мій  погляд, модуль 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', <br>
      ); 

    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 Рейтинг: 5

Також по темі

1

По перше, що таке Apache Solr?

Apache Solr - це розширювана пошукова платформа з відкритим вихідним кодом для проекту Apache Lucene.

2

На серверах з nginx в якості фронтенду і Apache в якості бекенду часто можна побачити таку помилку. Зазвичай думають, що проблема в nginx і починають його пиляти....

3

Facebook Developer Blog опублікував хорошу новину: тепер можна отримати адресу та мобільний телефон користувача.

4

При розробці сайту з нерухомості, клієнт попросив імпортували в таксономію базу даних всіх міст світу. В результаті ми написали свій модуль, заточений під великі обсяги даних.

5

В блозі розглянемо дуже корисний модуль, який дозволяє вставляти FileField поля прямо в текстовий редактор.

Subscribe to our blog updates