XMLReader + while + много данных = непонятно что

  • Автор темы Автор темы Sync
  • Дата начала Дата начала

Sync

Новичок
XMLReader + while + много данных = непонятно что

Импортирую прайсы на тур-поездки. Прайс имеет такую структуру
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");

Объем этих прайсов от 100К до 30М. Пример: файл объемом 4М имеет ~30 000 элементов.
На файлах, больших чем 6-7М скрипт отрабатывает 10-15 тыс. итераций while и все. Более того, не выводится даже сообщение
END OF WHILE, хотя скрипт уже завершил работу. В ошибках отключены только нотисы.
Вот результат работы:

PHP:
....
9800
9900
10000
10100
10200
10300
Все, больше ничего. Это вывод $k.

Пробовал закоментить вставку в таблицу $db->auto_insert('prices',$data), тоже самое.

Не пойму это странное поведение. В чем может быть проблема?
 
М.б. скрипт превысил отведённое ему на исполнение время?
 
Ну вывалилась бы тогда Fatal Error.
Стоит 300 сек. Он выполняется не более минуты.
 
Сверху