Есть json размером ~12мб. И в нем 5 уровней вложенности.
Город
-Жилищный комплекс
--Дом
---Подъезд
----Квартира
Файлик забирается по фтп и парсится в БД. Парсится довольно топорно - foreach на каждый уровень вложенности. Занимает это порядка 10 минут.
Как можно ускорить парсинг? Любые способы, например написать парсер на Си. Или запустить параллельно несколько foreach? Какие еще есть способы-хитрости? Более-менее полезного не удалось нагуглить. Спасибо.
Александр Аксентьев, Там тысячи квартир. По каждомоу объекту, комплексу, городу и т.д. много свойств, sleepов нет. Техническая реализация нормальная, все работает. Там проблемы нет. Нужна именно какая-нибудь хитрость, чтобы все ускорить
Там тысячи квартир. По каждомоу объекту, комплексу, городу и т.д. много свойств, sleepов нет.
ну так оно и обрабатывается соответствующе наверно количеству, если бы были хитрости чтобы ускорить любой код, то не стали бы придумывать какие-то майскуэли, бигдаты и хадупы.
Есть одна хитрость - снимаете дамп xdebug(или какой-нибудь blackfire.io) и смотрите что именно долго выполняется - фиксите(если возможно).
Собирайте отдельный массив и когда набирается N количество записей -> массово заливайте в базу.
N количество зависит от доступной для php памяти, чтобы не было крашей из-за того что память кончилась.
И на выходе при импорте 5000 записей с записью каждые 1000, вы сделаете например 5 больших запросов по 1000 за раз, а не 5000 отдельным insert запросов.