Допустим, необходимо проделать некую операцию с большим количеством node и времени выполнения скрипта не хватает.
В этом случае можно увеличить время выполнения скрипта следующим образом:
set_time_limit($time); // $time in seconds
Это, мягко говоря, не самое правильное решение.
В этом случае на много правильнее реализовать это через batch.

Пользоваться batch крайне просто. Сейчас приведу пример.
Допустим мы имеем массив из nid:
Также есть некая функция, которая работает с этим массивом.
Для примера просто будем загружать и сохранять node.
Теперь описываем функцию с batch.
Будем делить массив $nids на части (по 5 эллементов) и отправлять в batch_example_nodes_resave()
Теперь достаточно передать наш массив в batch_example_nodes_resave_batch() и посмотреть, как все красиво работает :)
p.s. Прошу прощения за дабл пост, хабр чето вообще себя не важно чувствует…
В этом случае можно увеличить время выполнения скрипта следующим образом:
set_time_limit($time); // $time in seconds
Это, мягко говоря, не самое правильное решение.
В этом случае на много правильнее реализовать это через batch.

Пользоваться batch крайне просто. Сейчас приведу пример.
Допустим мы имеем массив из nid:
Copy Source | Copy HTML
- $nids = array(
- 0 => nid,
- 1 => nid,
- …
- n => nid,
- );
Также есть некая функция, которая работает с этим массивом.
Для примера просто будем загружать и сохранять node.
Copy Source | Copy HTML
- function batch_example_nodes_resave($nids = array()){
- foreach ($nids as $nid){
- if (is_numeric($nid)){
- $node = node_load($nid);
- node_save($node);
- }
- }
- }
Теперь описываем функцию с batch.
Будем делить массив $nids на части (по 5 эллементов) и отправлять в batch_example_nodes_resave()
Copy Source | Copy HTML
- function batch_example_nodes_resave_batch($nids = array()){
- $operations = array();
- while($nids){
- $nids_part = array_splice($nids, 0, 5);
- $operations[] = array('batch_example_nodes_resave', array($nids_part ));
- }
- $batch = array(
- 'title' => t('Resave nodes'),
- 'operations' => $operations,
- );
- batch_set($batch);
- batch_process();
- }
Теперь достаточно передать наш массив в batch_example_nodes_resave_batch() и посмотреть, как все красиво работает :)
p.s. Прошу прощения за дабл пост, хабр чето вообще себя не важно чувствует…