Download - Антон Шлома. Drupal очереди
Drupal очередиDrupal 7: Queue API
Антон ШломаИнженер-программистГруппа Компаний i20
Что такое очередь?
Что такое очередь?FIFOFirst In, First Out
Зачем нужен Queue API ?1. Фоновое
выполнение сложных операций.
2. Отложенное выполнение (распределенная нагрузка).
Зачем нужен Queue API ?3. Импорт большого
объема данных.4. Управление
огромным списком задач по частям.
5. Упростить разработку.
Чего позволяет избежать?1. Нехватка пямяти.2. Таймаут соединения.3. Ухудшение производительности.4. Долгое ожидание ответа.5. Блокировка внешними сервисами.6. Потеря данных.7. Излишняя обработка.
Как работать с Queue API?Добавление задач в очередь Worker
DrupalQueue::get('my_queue');
$queue->createQueue();
$queue->createItem($node);
Initialising...
$queue->claimItem($time = 3600);
Do something...
$queue->deleteItem($item);
hook_cron_queue_info() $queue['mymodule_queue'] = array( 'worker callback' => 'mymodule_item_process', 'time' => 60, ); return $queue;
mymodule_queue - имя очереди.
worker callback - функция, которая будет обрабатывать каждый элемент очереди.
time - максимальное время выполнения крона очереди
Elysia Cron: hook_cronapi() $items = array(); $items['cron_name'] = array( 'description' => 'Create some tasks to solve.', 'rule' => '0 3 * * *', // Run this job every day at 3am. 'callback' => 'mymodule_queue_set', ); return $items;
cron_name - Уникальное имя задачи для крона
description - описание
rule - период запуска
callback - функция, которая будет отрабатывать по крону
Примеры1. Рассылка обновлений по email.2. Экспорт заказов пользователей.3. Синхронизация товаров и остатков из xml.4. Синхронизация результатов транзакций платежной
системы.5. Отправка данных на внешний сервис.6. Рассылка приглашений вернуться на сайт.7. Уведомление о поступлении товара.
Реализация в модуляхAggregatorПроверяет ленту новостей на новые элементы
FeedsИмпорт
NotificationsРассылка уведомлений
Organic groupsУдаление членства в группе и связного содержимого группы.
RulesВыполнение разовых работ
Search ApiИндексация элементов
VideoПерекодирование видео
Views bulk operationsВыполнение операций в фоновом режиме.
Queue UI1. Просматривать список очередей и количества элементов.2. Задавать мета-информацию к очередям.3. Обработка очередей при помощи Batch API4. Обработать очереди по крону.5. Удалять очереди.
Спасибо за внимание!Вопросы?