Антон Шлома. drupal очереди

13

Click here to load reader

Upload: drupalsib

Post on 02-Jul-2015

109 views

Category:

Technology


7 download

DESCRIPTION

DrupalCafe#9@Novosibirsk https://vk.com/drupalcafe9 Что такое очереди, как эту технику технологию применить, чего она позволяет избежать, какие задачи решает, как Queue API реализован в Drupal 7, какие наиболее популярные модули для D7 используют очереди. ----- Сайт сибирского сообщества друпаллеров ДрупалСиб drupalsib.ru Группа сибирского сообщества друпаллеров Вконтакте vk.com/drupalsib Партнер Группа компаний И20 i20.biz

TRANSCRIPT

Page 1: Антон Шлома. Drupal очереди

Drupal очередиDrupal 7: Queue API

Антон ШломаИнженер-программистГруппа Компаний i20

Page 2: Антон Шлома. Drupal очереди

Что такое очередь?

Page 3: Антон Шлома. Drupal очереди

Что такое очередь?FIFOFirst In, First Out

Page 4: Антон Шлома. Drupal очереди

Зачем нужен Queue API ?1. Фоновое

выполнение сложных операций.

2. Отложенное выполнение (распределенная нагрузка).

Page 5: Антон Шлома. Drupal очереди

Зачем нужен Queue API ?3. Импорт большого

объема данных.4. Управление

огромным списком задач по частям.

5. Упростить разработку.

Page 6: Антон Шлома. Drupal очереди

Чего позволяет избежать?1. Нехватка пямяти.2. Таймаут соединения.3. Ухудшение производительности.4. Долгое ожидание ответа.5. Блокировка внешними сервисами.6. Потеря данных.7. Излишняя обработка.

Page 7: Антон Шлома. Drupal очереди

Как работать с Queue API?Добавление задач в очередь Worker

DrupalQueue::get('my_queue');

$queue->createQueue();

$queue->createItem($node);

Initialising...

$queue->claimItem($time = 3600);

Do something...

$queue->deleteItem($item);

Page 8: Антон Шлома. Drupal очереди

hook_cron_queue_info() $queue['mymodule_queue'] = array( 'worker callback' => 'mymodule_item_process', 'time' => 60, ); return $queue;

mymodule_queue - имя очереди.

worker callback - функция, которая будет обрабатывать каждый элемент очереди.

time - максимальное время выполнения крона очереди

Page 9: Антон Шлома. Drupal очереди

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 - функция, которая будет отрабатывать по крону

Page 10: Антон Шлома. Drupal очереди

Примеры1. Рассылка обновлений по email.2. Экспорт заказов пользователей.3. Синхронизация товаров и остатков из xml.4. Синхронизация результатов транзакций платежной

системы.5. Отправка данных на внешний сервис.6. Рассылка приглашений вернуться на сайт.7. Уведомление о поступлении товара.

Page 11: Антон Шлома. Drupal очереди

Реализация в модуляхAggregatorПроверяет ленту новостей на новые элементы

FeedsИмпорт

NotificationsРассылка уведомлений

Organic groupsУдаление членства в группе и связного содержимого группы.

RulesВыполнение разовых работ

Search ApiИндексация элементов

VideoПерекодирование видео

Views bulk operationsВыполнение операций в фоновом режиме.

Page 12: Антон Шлома. Drupal очереди

Queue UI1. Просматривать список очередей и количества элементов.2. Задавать мета-информацию к очередям.3. Обработка очередей при помощи Batch API4. Обработать очереди по крону.5. Удалять очереди.

Page 13: Антон Шлома. Drupal очереди

Спасибо за внимание!Вопросы?