m7v
8/10/2015 - 10:46 AM

Process cron queue.

Process cron queue.

<?php

$your_queue = 'queue_name';
$queues = module_invoke_all('cron_queue_info');
drupal_alter('cron_queue_info', $queues);
DrupalQueue::get($your_queue)->createQueue();
foreach ($queues as $queue_name => $info) {
  if (!empty($info['skip on cron']) || $queue_name != $your_queue) {
    // Do not run if queue wants to skip.
    continue;
  }
  $function = $info['worker callback'];
  $end = time() + (isset($info['time']) ? $info['time'] : 15);
  $queue = DrupalQueue::get($queue_name);
  while (time() < $end && ($item = $queue->claimItem())) {
    try {
      $function($item->data);
      $queue->deleteItem($item);
    }
    catch (Exception $e) {
      // In case of exception log it and leave the item in the queue
      // to be processed again later.
      watchdog_exception('cron', $e);
    }
  }
}