Как разделить большой файл xml?

Имеется файл XML, в нем около 35.000 записей. Нужно залить его в БД. На локальном сервере работает, на реальном хостинге нет. ВОзможности изменять параметры хостинга нет. Решил разбить на несколько файло по 20.000 записей, а потом по очереди залить в БД. Полученный код такой:
$data = new \SimpleXMLElement($request->file('feed'), null, true);

        $json = json_encode($data);
        $data = json_decode($json);

        $strings = count($data->offer); //Общее количество строк (в имеющемся файле их 34.493)
        $countString = 20000; // Количество записываемых в файл строк 
        $countFiles = intval($strings / $countString); // Целочисленное значение количества получаемых файлов
        $ostatok = $strings % $countString; // дробное число строк, оставшееся от деления

        $xml = new \SimpleXMLElement("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Ads/>");

        //Создаем файл
        for($key = 0; $key < $countFiles; $key++) {
            // Записываем в него данные
            for ($i = 0; $i < $countString; $i++) {
                $item = $data->offer[$i];
                $offer = $xml->addChild('offer');
                $offer->addChild('type', $item->type);
            }
            //Сохраняем на диск
            $dom = new \DOMDocument('1.0');
            $dom->preserveWhiteSpace = false;
            $dom->formatOutput = true;
            $dom->loadXML($xml->asXML());

            $dom->save('files/feed'.$key.'.xml');
        }


Результатом исполнения сего шедевра стало получение двух файлов. В первом было записано 20.000 строк, во втором было записано два раза по 20.000 строк.

Вопрос такой - после записи строк в первый файл нужно из массива $data их удалить, а оставшиеся записать во второй файл. Как это сделать?

Спасибо
  • Вопрос задан
  • 561 просмотр
Пригласить эксперта
Ответы на вопрос 1
@balamyt92
; select * from users; --
Имеется файл XML, в нем около 35.000 записей. Нужно залить его в БД.... Решил разбить на несколько файло по 20.000 записей, а потом по очереди залить в БД.

Не пилите костыли php.net/manual/ru/class.xmlreader.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы