Как правильно распарсить большой xml файл и сохранить данные?
Мне нужно "прочитать" большой xml файл и добавить значения в базу.
Для парсинга использую XMLReader + DOMDocumnet в итоге получаю массив такого вида.
[
'categories' => [
0 => [
'name' => 'Category',
'id' => 1456,
'parent_id' => 284
]
],
'products' => [
0 => [
'category_id' => 1456,
'id' => 135,
'available' => true,
'price' => 22
...
],
....
]
]
Как правильно распарсить файл, что бы не получить вылет по "Времени исполнению скрипта" или объёму памяти?
Я пришел к тому, что нужно сначала:
- распарсить категории
- отловить закрытие тега
categoriesи записать данные в json - дальше собирать товары, но, сохранять в файл не в конце, а к примеру после 100 записи.
- перебрать результат и сохранить в бд
Но, что-то меня смущает в этом порядке.
- Как добавить большое количество данных в бд, что бы это минимально сказалось на производительности?
По факту сейчас для добавления одного товара надо сделать мин. 5 запросов
insert(добавить товар, связать с категорией, картинкой, свойствами и т. п.), это так же нужныselectдля проверки уникальности.
Подскажите, как правильно все организовать.