Пытаюсь загрузить Не вызывать список xml файл в MySql DB.Размер файла составляет 256 МБ.Он загружается, но когда начинается его обработка, я зацикливаю телефонные номера и объединяю 1000 телефонных номеров в переменную.Когда он достигает предела 1000, я создаю запрос INSERT и выполняю запрос.Но проблема заключается в том, что после вставки 3,50000 записей написано "Неустранимая ошибка: допустимый объем памяти 2097152000 байтов исчерпан (попытка выделить 24 байта) в / var / domains / htdocs / aim / приводит / dnc в строке 1308)«.
Ниже приведен фрагмент кода.
if(($fp = fopen($destination,"r"))) {
$buffer = fgets($fp);
$objXml = new XML($buffer);
$lists = Set::reverse($objXml);
$buffer = fgets($fp);
$objXml = new XML($buffer);
$acc = Set::reverse($objXml);
try {
while(!feof($fp)){
$counter = 0;
$phonesNo = "";
while(!feof($fp) && ($buffer = fgets($fp)) && $counter != 1000){
$objXml = "";
$arrXml = "";
$objXml = new XML($buffer);
$arrXml = Set::reverse($objXml);
$counter++;
if(isset($arrXml['Ph']['val']))
$phonesNo .= "(".$acc['Ac']['val'].$arrXml['Ph']['val']."),";
}
$phonesNo = substr($phonesNo,0,-1);
$sql = "INSERT INTO do_not_call_lists (`phone`) VALUES " .$phonesNo;
unset($phonesNo);
$this->Lead->query($sql);
}
}catch (Exception $ex){
trigger_error("ERROR: ". $ex->getMessage(). " Trace: ".$ex->getTrace());
}
$this->Session->setFlash('File imported successfully.','default',array('class'=>'sucessMsg'));
}
Заранее большое спасибо.