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 или других инструментов, которые идеально подойдут в вашем случае.

Похожие материалы