Добрый день!
Разрабатываю специализированный модуль для каталога автозапчайстей.
Есть специализированная программа (КАИС) - представляет собой каталог автозапчастей с актуальными ценами, заменами и т.д.
Выгрузка из данного каталога представляет собой дамп базы в формате SQL.
Файл весит около 180 Mb и содержит около 2000000 записей. Задумка модуля состоит в том что он построчно читает файл дампа и выполняет продченный запрос. Т.к число записей внушительно, принято решение пакетной обработки (использую batch API). Если в файле содержится менее 5000 строк, обработка проходит "На Ура", а вот как только записей становистя больше (в идеале около 2000000), выдается ошибка "Доступ запрещён. У вас нет доступа к этой странице."
Пробывал увеличивать параметры в php.ini - не помогает
Кусок кода модуля
<?php
function kais_upload_form_submit(&$form, &$form_state) {
if ($file = file_save_upload('upload', $validators, file_directory_path())) {
$file->description = $file->filename;
$file->weight = 0;
$file->new = TRUE;
$form_state['values']['files'][$file->fid] = (array)$file;
}
/* ИМПОРТ SQL ИЗ ФАЙЛА */
$handle = fopen($file->filepath, "r");
while (!feof($handle)) {
$buffer = fgets($handle, 8096);
if($buffer!=""){
$operations[] = array('kais_add_product', array($buffer));
}
}
fclose($handle);
$batch = array(
'operations' => $operations,
'finished' => 'kais_batch_finished',
'title' => 'Импорт данных из КАИС',
'init_message' => 'Подготовка данных',
'progress_message' => 'Выполнено current из total.',
'error_message' => 'Произошла ошибка.',
);
batch_set($batch);
batch_process();
/* ИМПОРТ SQL ИЗ ФАЙЛА */
}
function
kais_add_product($buffer, &$context) {
db_query($buffer);
$context['results'][] = 'TEST TEST TEST';
$context['message'] = 'TEST';
}
?>
Комментарии
Кажись ты словил баг 99.5%, погугли по друпал.оргу
А что за бага такая? В каких случаях вылезает и по каким запросам лучше гуглить?
Если речь об этом , то это не тот случай.
Процесс выполнения вообще не идет, а сразу же вылезает ошибка прав доступа
Разобрался. Странно но косяк был в кодировке файла, заменил на UTF-8 заработало