Вы здесь

Работа с очередями (queue api) в drupal 7

Интересный пример работы с очередями нашёл на dru.io, сохраняю сюда, чтобы не потерять.

Пример создания и разбора очереди (с помощью https://www.drupal.org/project/ultimate_cron)

/**
 * Implements hook_cronapi().
 */
function druio_rating_cronapi() {
  $items = array();
  $items['druio_rating_create_queue'] = array();
  return $items;
}
 
function druio_rating_create_queue() {
  $queue = DrupalQueue::get("user_rating");
  $query = db_select('users', 'u');
  $users = $query
    ->fields('u', array('uid'))
    ->execute()
    ->fetchAll();
 
  foreach ($users as $user) {
    $queue->createItem((array) $user);
  }
}
 
function druio_rating_cron_queue_info() {
  $queues['user_rating'] = array(
    'worker callback' => 'druio_rating_worker_queue',
    'time' => 60,    // Time, in seconds, to let this process run [Optional]
  );
  return $queues;
}
 
function druio_rating_worker_queue($user) {
  $uid = $user['uid'];
  if ($uid) {
    $user_wrapper = entity_metadata_wrapper('user', $uid);
    $user_wrapper->field_user_rating = druio_rating_count($uid);
    $user_wrapper->save();
  }
  watchdog('rating', 'Done uid @nid', array('@uid' => $user['uid']));
}

 

Тэги: 
Источник: 
http://dru.io/question/5386
Поделиться:

Оставить комментарий