Работа с очередями (queue api) в drupal 7
Разместил Саша → 15.01.2016
Интересный пример работы с очередями нашёл на 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
Оставить комментарий