function hosting_run_queue

7.x-3.x hosting.queues.inc hosting_run_queue()

Run a queue specified by hook_hosting_queues()

Run an instance of a queue processor. This function contains all the book keeping functionality needed to ensure that the queues are running as scheduled.

Related topics

1 string reference to 'hosting_run_queue'
hosting_drush_command in ./hosting.drush.inc
Implements hook_drush_command().

File

./hosting.queues.inc, line 119
This file defines an API for defining new queues.

Code

function hosting_run_queue() {
  $cmd = drush_get_command();
  $queue = $cmd['queue'];
  $count = drush_get_option(array('i', 'items'), 5); // process a default of 5 items at a time.
  $semaphore = "hosting_queue_{$queue}_running";

  variable_set('hosting_queue_' . $queue . '_last_run', $t = REQUEST_TIME);

  drush_log(dt('Acquiring lock on @queue queue.', array('@queue' => $queue)));
  $lock_wait = drush_get_option('lock-wait', HOSTING_QUEUE_DEFAULT_LOCK_WAIT);
  if (!lock_wait($semaphore, $lock_wait) || drush_get_option('force', FALSE)) {
    if (lock_acquire($semaphore, HOSTING_QUEUE_LOCK_TIMEOUT)) {
      drush_log(dt('Acquired lock on @queue queue.', array('@queue' => $queue)));
    }
  }
  elseif (drush_get_option('force', FALSE)) {
    drush_log(dt('Bypassing lock on @queue queue.', array('@queue' => $queue)), 'warning');
  }
  else {
    drush_die(dt('Cannot acquire lock on @queue queue.', array('@queue' => $queue)));
  }

  $func = "hosting_" . $queue . "_queue";

  if (function_exists($func)) {
    $func($count);
  }

  drush_log(dt('Releasing @queue lock.', array('@queue' => $queue)));
  lock_release($semaphore);
}