Drupal Batch API та його використання — блог Drudesk
050 640 98 44
support@drudesk.com

Складне стає простим завдяки Drupal Batch API

Що дає вашому мозку енергію робити складні задачі та оперувати величезною кількістю інформації? Кофеїн, глюкоза, спеціальні техніки запам’ятовування, фізична зарядка чи, можливо, очікування бажаної відпустки? Нехай це залишається вашим секретом — а ми розповімо, що допомагає сайтам. Звісно, ви можете пригостити свій Drupal-сайт кавою, але це не наша сьогоднішня тема. Ми обговоримо чудовий інструмент для операцій з великою кількістю даних, що називається Batch API. Розглянемо принцип його роботи, версії для Drupal 7 і Drupal 8, а також основні сфери застосування.

Як працює Drupal Batch API

Велику задачу легше робити, розбивши її на маленькі кроки. Drupal Batch API розбиває складні та часозатратні процеси з великою кількістю даних на маленькі сегменти (batches).

Цей підхід дозволяє серверу «дихати вільніше», допомагає уникати неприємних PHP-таймаутів та вичерпання пам’яті. Максимальний час виконання PHP рахується для одного сегменту, а не для всієї процедури, тож ліміту ви досягнете не скоро.

Ще одна перевага такого принципу роботи — це те, що у випадку якоїсь помилки вам буде легше повернутися до місця, де вона сталася, а не починати все з самого початку.

Завжди важливо тримати процес під контролем і знати, скільки вже виконано, а скільки залишається. Batch API має зручний індикатор виконання процесу, який інформує про це користувачів (розробників, адміністраторів або ж простих відвідувачів), а також показує повідомлення, якщо такі з’являються в процесі.

Drupal Batch API і Drupal 7 і Drupal 8

Не дивно, що такий мудрий помічник включений до ядра Drupal. Batch API в Drupal 8, порівняно з Batch API в Drupal 7, не дуже змінився по своїй суті, хоча зараз співпрацює з деякими новими об’єктами ядра Drupal 8.

Головне покращення — це те, що його роботу зараз регулює новий контролер під назвою BatchController дбає про основні функції та повертає мінімальні респонси.

Деякі сфери застосування Batch API

Давайте розглянемо хоча б декілька прикладів того, де саме Batch API може стати для вас корисним помічником.

Завдяки Batch API можна експортувати величезні об’єми даних з Drupal-сайту, навіть коли у вас немає доступу до сервера, або коли використання Cron чи Drush неможливе. Ви можете отримувати великі кастомізовані звіти, наприклад, у форматі CSV.

Batch API також допоможе вам у складних та масштабних процесах завантаження файлів, надсилання контенту до сторонніх API і керування процесами, в яких бере участь багато користувачів.

Batch API і hook_update_N()

Особливо корисне поєднання — Batch API з hook_update_N(). Воно допоможе вам в оновленні модуля до нової версії, програмному оновленні аліасів URL-ів, встановленні дефолтних значень полів для нод контент-типу, і так далі.

Якщо в цих випадках є ризик PHP-таймауту, немає кращого вибору за Batch API. За допомогою параметру $sandbox ви можете вказати, що хочете використовувати для операції саме Batch API, а також зробити потрібні налаштування.

Висновок

Деякі речі лише здаються складними, поки до них не знайдеться правильний підхід. У цьому філософія Drupal Batch API і нашої служби підтримки сайтів повністю збігається. Напишіть нам, якщо на вашому сайті потрібно зробити складні речі простими — за допомогою Batch API або інших інструментів, які найкраще підійдуть у вашому випадку.