Помогите разобраться...устал уже. Задача такая - нужно с Excel файла с помощью скрипта по определённым колонкам взять значение поискать в базе - если есть - исправить на то что в файле если нету вывести на экран. В конце подсчитать количество исправленных и вывести не найденные. В общем вот следующий код: Код (Text): <? set_time_limit(0); define('DB_HOST', 'localhost'); define('DB_USER', '********'); define('DB_PASS', '********'); define('DB_NAME', '********'); $ctt = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error()); $db = mysql_select_db(DB_NAME) or die("Ошибка базы данных"); mysql_query ("SET NAMES 'windows-1251'"); #---------------------------------------------- function getXLS($xls){ include_once 'Classes/PHPExcel.php'; include_once 'Classes/PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load($xls); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); $array = array(); foreach($aSheet->getRowIterator() as $row){ $cellIterator = $row->getCellIterator(); $item = array(); foreach($cellIterator as $cell){ array_push($item, iconv('utf-8', 'cp1251', $cell->getCalculatedValue())); } array_push($array, $item); } return $array; } $xlsData = getXLS('xls/nprice.xls'); #---------------------------------------------- $col_str = sizeof($xlsData); for ($i = 0; $i < $col_str; $i++) { $artikle = $xlsData[$i][1]; $cena = $xlsData[$i][3]; $tmp=" UPDATE SS_products SET Price = ".$cena.", sort_order = -51 WHERE product_code = ".$artikle." AND categoryID = 1443 "; $res = mysql_query($tmp); $num = mysql_affected_rows(); $num2 = $num; if ($num = 0) { $notarticle .= $artikle.$cena."<br>"; global $notarticle; } $num2 += $num2; global $num2; } #---------------------------------------------- echo "Исправлено товаров: <b>".$num2."</b><br><br>"; echo "Не найдено товаров: <b>".$notarticle."</b><br><br>"; ?> Сначала сервер долго думал потом вылетела ошибка тайм-аута 300, я убрал тайм-аут теперь вылазит ошибка что не хватает памяти, но сам файл маленький, я даже урезал ради теста в 10 строк. Добавлено спустя 18 минут 39 секунд: Затестил без базы: Код (Text): <? set_time_limit(0); function getXLS($xls){ include_once 'Classes/PHPExcel.php'; include_once 'Classes/PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load($xls); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); //этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки $array = array(); //получим итератор строки и пройдемся по нему циклом foreach($aSheet->getRowIterator() as $row){ //получим итератор ячеек текущей строки $cellIterator = $row->getCellIterator(); //пройдемся циклом по ячейкам строки //этот массив будет содержать значения каждой отдельной строки $item = array(); foreach($cellIterator as $cell){ //заносим значения ячеек одной строки в отдельный массив array_push($item, iconv('utf-8', 'cp1251', $cell->getCalculatedValue())); } //заносим массив со значениями ячеек отдельной строки в "общий массв строк" array_push($array, $item); } return $array; } $xlsData = getXLS('xls/nprice.xls'); //извлеаем данные из XLS #---------------------------------------------- $col_str = sizeof($xlsData); for ($i = 0; $i < $col_str; $i++) { $artikle = $xlsData[$i][1]; $cena = $xlsData[$i][3]; echo "Исправлено товаров: <b>".$artikle."</b><br><br>"; echo "Не найдено товаров: <b>".$cena."</b><br><br>"; } Зависает точно так же...значит проблема в извлечении данных с Excel файла, на локальном все работает а на хосте нет. PHPExcel установлен...может какие то настройки надо делать?
что работает на локале? если все работает на локале - с этого и нужно начинать, мол скрипт рабочий, на локале работает, перенес на сервер - все пропало.
Zante7777 если происходит ошибка, то приведи её текст. Мы бы глянули на строку где она происходит и попытались бы прикинуть что не так. http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging.html
Ошибка следующая: Код (Text): Fatal error: Allowed memory size of 1258291200 bytes exhausted (tried to allocate 1254359069 bytes) in /var/www/admin/www/********/Classes/PHPExcel/Shared/OLERead.php on line 155 увеличивал я уже размер с 512 до 1200 все ровно долго думает потом выдает ошибку. Вряд ли проблема в размере памяти, там файл на 10 строк совсем небольшой.