MYSQL Insert — импорт json файла с большим количеством данных — как?
Продолжая тему - импортирую в базу MySQL данные получаемые по API от партнера.
Данные он отдает в формате JSON. Данные - информация по отелям в конкретном городе - полные- название, адрес, ссылки на фотографии и т.д.
И вот допустим беру Москву - в json для импорта 1301 отелей, 32 тысячи записей о фотографиях.
И вот не могу эту информацию в базу занести - не хватает мощности что ли, или настройки какие не те где-то.
Импорт следующий
api удаленное, получаю файл через file_get_contents, далее json_decode
и дальше циклом for прохожусь по массиву полученному.
В каждой итерации - insert на добавление отеля
потом еще несколько insert для опций отеля в следующие отдельные таблицы и самый большой -
insert с множеством строк для фотографий.
Так вот - сервер похоже не вывозит выпадая с 500 ошибкой. график нагрузки до 97% растет - подозреваю что из-за этого как раз и поэтому обрубается все.
Сервер настраивал сам - вернее развернул VESTA, для php лимит времени до 120 увеличил и конфиг mysql крутил.
В общем как быть? Это только Москва, а городов больше 30тыс. ясно что во многих городах отелей много меньше, но все равно крупных городов хватает.
А вы посмотрите, сколько памяти в пике кушает PHP при обработке 1000 тестовых записей. И сразу поймете, сколько вам надо памяти для полноценной обработки.
В PHP memory_get_peak_usage(), memory_get_usage() - узнаете сколько памяти жрет скрипт.
И параметр memory_limit устанавливает ограничения на потребление памяти. Можно поставить нужное значение для каких нибудь отдельных особо жручих скриптов. Можно динамически менять через ini_set()
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.