Имеется вот така функция php, которая обрабатывает огромный xml (1,5 Гб, 1,5 млн. записей в дочерними тегами).
Пример xml
<?xml version="1.0" encoding="utf-8"?>
<DATA FORMAT_VERSION="1.0">
<RECORD><NAME>ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ ВИРОБНИЧО-ТОРГОВА ФІРМА ШАРМ</NAME><SHORT_NAME>ТОВ "ВТФ "ШАРМ"</SHORT_NAME><EDRPOU>00308749</EDRPOU><ADDRESS>93113, Луганська обл., місто Лисичанськ, ПРОСПЕКТ ЛЕНІНА, будинок 159</ADDRESS><BOSS>ОЛІЙНИК ТЕТЯНА САВЕЛІЇВНА</BOSS><KVED>14.13 Виробництво іншого верхнього одягу</KVED><STAN>зареєстровано</STAN><FOUNDERS><FOUNDER>БАТУРКІНА ІРИНА МИХАЙЛІВНА, розмір внеску до статутного фонду - 3000.00 грн.</FOUNDER><FOUNDER>РЕВА ВАЛЕНТИНА ІВАНІВНА, розмір внеску до статутного фонду - 3000.00 грн.</FOUNDER><FOUNDER>ПЕТРЕНКО КЛАВДІЯ СЕРГІЇВНА, розмір внеску до статутного фонду - 3000.00 грн.</FOUNDER></FOUNDERS></RECORD>
</DATA>
Обработчик xml
function updateFirmsXML()
{
$mysql = connectBase();
$dir = __DIR__ . '/../../tmp/';
$xmlURL = $dir . '15.1-EX_XML_EDR_UO.xml';
$xml = new XMLReader();
$xml->open($xmlURL);
$start_time = time();
header('Content-Type: text/html; charset=utf-8');
$count = 0;
$count2 = 0;
while($xml->read())
{
if($xml->nodeType == XMLReader::ELEMENT && $xml->name == 'RECORD')
{
$item[] = "('firms', '" . mysqli_real_escape_string($mysql, $xml->readOuterXML()) . "')";
}
if($xml->nodeType == XMLReader::END_ELEMENT && $xml->name == 'RECORD')
{
$count++;
$count2++;
if ($count >= 500) {
saveXMLtoDB($item);
$item = array();
$count = 0;
}
}
}
$xml->close();
echo saveXMLtoDB($item);
die;
}
Функция добавления в базу
function saveXMLtoDB($item = false){
$mysql = connectBase();
$sql = "INSERT INTO _parse_tmp (parse_key, parse_value) VALUES " . implode(", ", $item);
mysqli_query($mysql, $sql);
echo 'Success';
}
Всего в базе 1 547 772 записей RECORD. Если с функции saveXMLtoDB убрать echo 'Success' в базу добавляеться более 9 млн. записей. С echo 'Success' все работает нормально. Если ограничить добавление только первых, примером, 1000 записей, то также все работает нормально.
Кто подскажет почему так происходит?