Introduction to Cron Queue 
Olga Smolyankina
300 FOR ALL
Run methods 
cron.php 
Ultimate Cron 
Elysia Cron 
.crontab 
.crontab 
drush queue-cron 
modules/drupal_queue_cron.php
Usage cases 
● Entity items creation. 
● Sending emails. 
● Other mass operations.
Usage cases
How To. Add Queue Items 
$queue = DrupalQueue::get('queue_name'); 
$queue->createQueue(); 
$queue->createItem(array( 
'key1' => $value1, 
'key2' => $value2, 
... 
hook_cron() 
)); API hook_node_insert($node) 
hook_user_insert(&$edit, $account, $category) 
hook_commerce_cart_order_empty($order) 
...
How To. Add Queue Items 
/** 
* Implements hook_cronapi(). 
*/ 
function mymodule_queue_cronapi($op, $job = NULL) { 
$items = array(); 
$items['add_queue_items'] = array( 
'rule' => '0 5 * * *', 
'arguments' => array(), 
API 
'callback' => 'add_queue_items_callback', 
); 
● Elysia Cron 
return $items; 
}
How To. Implementation 
/** 
* Implements hook_cron_queue_info(). 
*/ 
function mymodule_cron_queue_info() { 
$queues = array(); 
$queues['queue_name'] = array( 
'worker callback' => '_mymodule_queue_worker_callback', 
'time' => 90, 
'skip on cron' => FALSE, 
); 
return $queues; 
}
How To. Process Queue Items 
system.queue.inc 
DrupalQueueInterface::createQueue(); 
DrupalQueueInterface::deleteQueue(); 
DrupalQueueInterface::createItem($data); 
DrupalQueueInterface::claimItem($lease_time = 3600); 
DrupalQueueInterface::releaseItem($item); 
DrupalQueueInterface::deleteItem($item); 
DrupalQueueInterface::numberOfItems();
Queue Run Tracking 
● Queue UI 
● Ultimate Cron
Negatives
Negatives vs Features 
● Cron run frequency. 
● Cron run duration. 
● Cron run propriety. 
● Item locking => single cron job at once. 
● Queue decoupled from the code => external queue run!
Thank you!

Introduction to cron queue

  • 1.
    Introduction to CronQueue Olga Smolyankina
  • 2.
  • 6.
    Run methods cron.php Ultimate Cron Elysia Cron .crontab .crontab drush queue-cron modules/drupal_queue_cron.php
  • 7.
    Usage cases ●Entity items creation. ● Sending emails. ● Other mass operations.
  • 8.
  • 9.
    How To. AddQueue Items $queue = DrupalQueue::get('queue_name'); $queue->createQueue(); $queue->createItem(array( 'key1' => $value1, 'key2' => $value2, ... hook_cron() )); API hook_node_insert($node) hook_user_insert(&$edit, $account, $category) hook_commerce_cart_order_empty($order) ...
  • 10.
    How To. AddQueue Items /** * Implements hook_cronapi(). */ function mymodule_queue_cronapi($op, $job = NULL) { $items = array(); $items['add_queue_items'] = array( 'rule' => '0 5 * * *', 'arguments' => array(), API 'callback' => 'add_queue_items_callback', ); ● Elysia Cron return $items; }
  • 11.
    How To. Implementation /** * Implements hook_cron_queue_info(). */ function mymodule_cron_queue_info() { $queues = array(); $queues['queue_name'] = array( 'worker callback' => '_mymodule_queue_worker_callback', 'time' => 90, 'skip on cron' => FALSE, ); return $queues; }
  • 12.
    How To. ProcessQueue Items system.queue.inc DrupalQueueInterface::createQueue(); DrupalQueueInterface::deleteQueue(); DrupalQueueInterface::createItem($data); DrupalQueueInterface::claimItem($lease_time = 3600); DrupalQueueInterface::releaseItem($item); DrupalQueueInterface::deleteItem($item); DrupalQueueInterface::numberOfItems();
  • 13.
    Queue Run Tracking ● Queue UI ● Ultimate Cron
  • 14.
  • 15.
    Negatives vs Features ● Cron run frequency. ● Cron run duration. ● Cron run propriety. ● Item locking => single cron job at once. ● Queue decoupled from the code => external queue run!
  • 16.