Пакетные операции дают возможность обрабатывать формы в течении нескольких запросов. Это предотвращает обрыв обработки изза тайм-аута РНР. Также пользователю предоставляется информация о ходе осуществления текущих операций.
Утверждают, что в первую очередь batch был разработан для гармоничной интеграции с Forms API, хотя часто его используют в обычных скриптах таких как update.php.
Представим, что нам необходимо осуществить обработку большого количества данных. Для начала мы создадим страницу в hook_menu.
Комментарии
А для каких практических целей это можно применить?Не считая инсталляций.
Обработка больших объемов данных, чтобы избежать timeout-а.
Встречается повсеместно
Можно было добавить, что вызывать batch_process из form submit-а необязательно.
Тогда будет "интеграция с Forms API"
http://drupalcode.org/project/drupal.git/blob/refs/heads/6.x:/includes/f...
Хорошая статья, спасибо автору. В свое время довольно долго разбирался с Batch API, поскольку примеров в сети было не очень много. Насчет обработки больших объемов данных - это да. С помощью Batch API как раз можно обойти максимальное время исполнения скрипта, которое ограничивает работу с большими объемами данных.
Правда и ограничение есть. Batch подразумевает запуск процеса пользователем из браузера. Если стоит задача сделать автономный механизм, который будет работать без прямого вмешательства человека - батч уже не прокатит. Для этого уже нужно использовать механизм очередей.
Еще в тему можно почитать об очередях в drupal 7 - http://www.drupal.ru/node/61925
Они также бекпортированны и 6-ую версию
Уже как год точно есть статья в документации, а примеры есть в ядре и контрибе.
предотвращает но не на 100%
У меня обрывы были
наверно функция не успевала отработать за установленный лимит времени
А у меня с batch проблемы, (http://www.drupal.ru/node/66253) только не пойму из-за чего, то ли из-за большого числа операций, то ли из-за каких-то ограничений LAMP