[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Импорт .xls с большим количеством строк, PHPExcel
Страницы: 1, 2
te6a
Добрый вечер!
При загрузке на сайт (импорт товаров) файла с количеством строк более 250 примерно, вылетает ошибка, нашел инфу, что скорее всего оперативной памяти не хватает.
Подскажите пожалуйста, как можно доработать рабочий скрипт на загрузку больших файлов эксель по частям? Или может есть еще какие-нубудь решения?
Вот скрипт загрузчика:

function importAction () {

if ($_POST) {

// коннектим функцию
require_once ADMIN_PATH.'/plagin/excel/reader.php';
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// Set output Encoding.
$data->setOutputEncoding('UTF8');
$data->setUTFEncoder('mb');
$data->read($_FILES['file1']['tmp_name']);
error_reporting(E_ALL ^ E_NOTICE);

// С отключением товара


$_str=array();

for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
$_str[]=$data->sheets[0]['cells'][$i][$j];
}

$_sql="SELECT * FROM `catalog` WHERE (`artikl`='".$_str[1]."')";
$result_artikul=mysql::query_one($_sql,0);

if ($result_artikul) {
// работаем с ценой

$_sql="UPDATE `catalog`
SET `sklad`='"
.$_str[2]."', `cost`='".$_str[3]."'
WHERE (`artikl`='"
.$_str[1]."')";
$result=mysql::just_query($_sql,0);




} else {
// товара нет на сайте

$_sql="INSERT INTO `catalog` (`artikul`, `name`, `cost`, `id_parent`, `status`, `created_at`, `sklad`, `supplier`, `brand`, `text_short`, `artikb`)
VALUES ('"
.$_str[0]."', '".$_str[1]."', '".$_str[3]."', '".$_str[7]."', '".$_POST['type_import2']."', '".date('Y-m-d')."', '".$_str[2]."', '".$_POST['type_import4']."', '".$_str[10]."', '".$_str[11]."', '".$_str[12]."')";
$result=mysql::just_query($_sql,0);
}

$_str="";

}

}


return system::show_tpl(
array(
'msg'=>$this->msg,
'select'=>dbh::get_catolog_tree(),
'tpl_folder'=>$this->tpl_folder
),$this->tpl_folder.'/import.php');

}

Так понимаю, что жрет память именно на цикле апдейта товаров, при инсерте загружает быстрее.
И еще, что нужно править в таком случае для загрузки частями, этот скрипт или может парсер эксель?
Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.