Sync
Новичок
XMLReader + while + много данных = непонятно что
Импортирую прайсы на тур-поездки. Прайс имеет такую структуру
Объем этих прайсов от 100К до 30М. Пример: файл объемом 4М имеет ~30 000 элементов.
На файлах, больших чем 6-7М скрипт отрабатывает 10-15 тыс. итераций while и все. Более того, не выводится даже сообщение
END OF WHILE, хотя скрипт уже завершил работу. В ошибках отключены только нотисы.
Вот результат работы:
Все, больше ничего. Это вывод $k.
Пробовал закоментить вставку в таблицу $db->auto_insert('prices',$data), тоже самое.
Не пойму это странное поведение. В чем может быть проблема?
Импортирую прайсы на тур-поездки. Прайс имеет такую структуру
PHP:
<prices>
<element P="4369" D="2007-03-04" aFCK="386" aTCK="26" htlBK="14" htlK="2161" htlRK="26" htlN="14" roomTK="7" roomAK="74" roomNA="2" roomNC="2" roomCK="186"/>
<element P="4669" D="2007-03-18" aFCK="386" aTCK="26" htlBK="14" htlK="2161" htlRK="26" htlN="14" roomTK="7" roomAK="74" roomNA="2" roomNC="2" roomCK="186"/>
<element P="4709" D="2007-03-25" aFCK="386" aTCK="26" htlBK="14" htlK="2161" htlRK="26" htlN="14" roomTK="7" roomAK="74" roomNA="2" roomNC="2" roomCK="186"/>
<element P="4389" D="2007-03-11" aFCK="386" aTCK="26" htlBK="14" htlK="2161" htlRK="26" htlN="14" roomTK="7" roomAK="74" roomNA="2" roomNC="2" roomCK="186"/>
</prices>
PHP:
Импорт:
$xml = new XMLReader();
$xml->open($spo_url);
while ($xml->read())
{
if (!$xml->getAttribute('aFCK')) {
continue;
}
$data[] = array(
'price' => $xml->getAttribute('P'),
'adults' => $xml->getAttribute('roomNA'),
'childs' => $xml->getAttribute('roomNC'),
'date' => $xml->getAttribute('D'),
'days' => $xml->getAttribute('htlD'),
'nights' => $xml->getAttribute('htlN'),
);
$db->auto_insert('prices',$data);
if ($k % 100 == 0) {
echo $k.'<br>';
}
$k++;
}
echo count($data);
die("END OF WHILE");
На файлах, больших чем 6-7М скрипт отрабатывает 10-15 тыс. итераций while и все. Более того, не выводится даже сообщение
END OF WHILE, хотя скрипт уже завершил работу. В ошибках отключены только нотисы.
Вот результат работы:
PHP:
....
9800
9900
10000
10100
10200
10300
Пробовал закоментить вставку в таблицу $db->auto_insert('prices',$data), тоже самое.
Не пойму это странное поведение. В чем может быть проблема?