fastnabus: Блог

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

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

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)
{

Создание миниатюр изображений

19 августа 2011 в 18:49

У меня в ImagСache есть тип для миниатюры, но я не знаю что и собственно где поставить чтобы при загрузке новых изображений в Ноду оно автоматически создавало миниатюры?

Как остановить batch?

15 августа 2011 в 15:20

Видать чего то я в использовании batch не уразумел, есть шмат кода который из ЕХСЕ-ля тянет в БД данные, чтобы обойти ограничение по Тайм-ауту начал пытаться использовать batch.
Вроде бы мой основной код работает и заносит данные в БД, но вот сам batch зацикливается и начинает работать вечно.
Объясните где нужно и чего поправить, чтобы он останавливался по прохождению определенного кол-ва итераций

<?php$batch = array(
  'title' => t('Процесс обновления пошел, сиди и жди'),
  'operations' => array(
        array('update_DB', array()),
        ),
  'finished' => 'finished_callback_to_batch',
);
batch_set($batch);
batch_process();

function update_DB(&$context)
{
    

        if (empty($context['sandbox'])) 
        {
            $context['sandbox']['progress'] = 0;
            $context['sandbox']['current_item'] = 4;
            $context['sandbox']['max'] = 30;//значение этого поля на что-то хоть влияет?
        }
        $limit = 10;

        for ($i=0; $i<$limit;$i++ )
        {

                       /*здесь собственно шмат кода который берет данные из excel`я и заносит в БД
                         работает вполне хорошо
                         */
            $context['sandbox']['progress']++;
        }
            
        if ($context['sandbox']['progress'] != $context['sandbox']['max']) 
            $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}

function finished_callback_to_batch($success, $results, $operations) 
{
  if ($success) 
  {
    $message = format_plural(count($results), 'One post processed.', '@count posts processed.');
  }
  else 
  {?>

В какой таблице лежит путь к КАРТИНКЕ? (модули ветки image)

10 августа 2011 в 17:41

Использую модули imageapi, imagecache, imagefield для размещения картинок по Нодам и их обработке (точнее это сделали до меня, а мне нужно с этим работать), с Друпалом общаюсь всего дней 5, в оригинале я PHP MySQL разработчик и вот пытаюсь понять как можно добраться к картинке собственно через БД. Если эта инфа лежит не в БД а во внутренних файлах модуля я тоже буду очень рад за разъяснение.
Заранее спасибо!