Как правильно распарсить большой xml файл и сохранить данные?

Мне нужно "прочитать" большой xml файл и добавить значения в базу.

Для парсинга использую XMLReader + DOMDocumnet в итоге получаю массив такого вида.

[
    'categories' => [
        0 => [
            'name' => 'Category',
            'id' => 1456,
            'parent_id' => 284
        ]
    ],
    'products' => [
        0 => [
            'category_id' => 1456,
            'id' => 135,
            'available' => true,
            'price' => 22
            ...
        ],
        ....
    ]
]
  1. Как правильно распарсить файл, что бы не получить вылет по "Времени исполнению скрипта" или объёму памяти?

    Я пришел к тому, что нужно сначала:

    • распарсить категории
    • отловить закрытие тега categories и записать данные в json
    • дальше собирать товары, но, сохранять в файл не в конце, а к примеру после 100 записи.
    • перебрать результат и сохранить в бд

    Но, что-то меня смущает в этом порядке.

    1. Как добавить большое количество данных в бд, что бы это минимально сказалось на производительности?

    По факту сейчас для добавления одного товара надо сделать мин. 5 запросов insert (добавить товар, связать с категорией, картинкой, свойствами и т. п.), это так же нужны select для проверки уникальности.

Подскажите, как правильно все организовать.


Ответы (0 шт):