function drush_services_client_process_queue in Services Client 7.2
Same name and namespace in other branches
- 7 services_client.drush.inc \drush_services_client_process_queue()
Process queued sync jobs
File
- ./
services_client.drush.inc, line 44 - Services client drush integration
Code
function drush_services_client_process_queue() {
// How long can command run
$time = drush_get_option('time', 55);
$end = time() + $time;
$sleep = drush_get_option('sleep', 1);
// Run only one process at time
if (lock_acquire('services_client_process_queue', (double) $time)) {
$queue = DrupalQueue::get('services_client_sync');
// For given period of time try to fetch data form queue and process them.
while (time() < $end) {
if ($item = $queue
->claimItem()) {
$retries = drush_get_option('retries', 3);
$result = services_client_queue_sync($item->data);
if (is_object($result) && get_class($result) == 'ServicesClientEventResult') {
while (!$result
->success() && $result->error_type != ServicesClientErrorType::LOOP && $retries > 0) {
// Retry and get new result
$result = $result
->retry();
$retries--;
}
// Send result for further processing by other modules.
module_invoke_all('services_client_process_events', array(
$result,
));
}
$queue
->deleteItem($item);
}
else {
sleep($sleep);
}
}
lock_release('services_client_process_queue');
}
}