Изза чего может не работать batch?

Главные вкладки

Аватар пользователя fastnabus fastnabus 1 сентября 2011 в 20:01

Требуется залить в БД из ехе-ля довольно большое кол-во содержимого, собственно код заливки рабочий, но не получается прикрутить Батч.
Внешне он делает вид что проходит 1-у итерацию, но реально ничего не делает и не выводит завершающегося сообщения.
Вот мой код:
<?php
function batch_form() {
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Начать',
);
return $form;
}
function batch_form_submit($form, $form_state)
{
...
//тут я задаю значения $near,$aSheet,$time

$batch = array(
'title' => t('Процесс обновления пошел, сиди и жди'),
'operations' => array(
array('update_DB_pro', array($near,$aSheet,$time)),
),
'finished' => 'finished_callback_to_batch',
'init_message' => t('Ща начнется погоди пару сек'),
'progress_message' => t('Грузится уже current-й блок'),
'error_message' => t('An error occurred and some or all of the batch has failed.'),
);
batch_set($batch);
batch_process();
}
function update_DB_pro(&$near,$aSheet,$time,&$context)
{
if (empty($context['sandbox']))
{
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_item'] = 4;
}
drupal_set_message($context['sandbox']['progress']."");
$end=false;
$limit = 10;

Update_DB($near,$aSheet,$time,$context['sandbox']['current_item'],$limit,$end);
$context['sandbox']['current_item'].=$limit;
if($end)
{
$context['sandbox']['max']=$context['sandbox']['current_item'];
$context['finished'] = 1;
}
}
function Update_DB(&$near,$aSheet,$time,$beg,&$limit,&$end)
{
$end_line=$beg+$limit;
for ($i=beg;$i<$end_line&&!$end;$i++)
{
if ($aSheet->getCell('B' . $i)->getValue()==='end')
{
$end=true;
break;
}
...
//заливка в БД
}
}
function finished_callback_to_batch()
{
drupal_set_message('Конец');
}
?>

когда отделяю код заливки от Батча все работает, тыкните плз где я на бокопорил.

Комментарии

Аватар пользователя reMaster reMaster 28 ноября 2012 в 18:12

так у вас и есть одна итерация:

$batch = array(
      'title' => t('Процесс обновления пошел, сиди и жди'),
      'operations' => array(
            array('update_DB_pro', array($near,$aSheet,$time)),
            ),

'operations' это массив ваших итераций