@veroni1337

Как обработать большой json на wordpress?

Здравствуйте. Мне нужно импортировать в записи большой json файл. Файл весит 500мб и в нем примерно 300 000 записей. Что бы не нагружать оперативную память использую для чтения https://github.com/halaxa/json-machine. Но столкнулся с проблемой, что на обычных хостингах недостаточно лимита на выполнения скрипта. Как можно импортировать такой объем данных в wordpress? Пробовал плагины для импорта по типу wp all import, но они зависают даже не загрузив этот файл. Можно было бы разделить файл и отдельными скриптами загружать эти данные, но этот файл мне нужно обрабатывать раз в неделю. Этот файл на стороннем сервере будет обновляться и должен каждый раз его загружать себе. Может нужно сделать разделение файла на мелкие части и создать так же для каждого json свой php скрипт который будет запускаться рекурсивно, что бы не попадать под лимит выполнения скрипта? Лимит 300 секунд на выполнение
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
@psiklop
Проще раз переехать. Хостинг нынче дешевый и разный, а как будто полувековой давности имеет нереальную проблему.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
dimonchik2013
@dimonchik2013
non progredi est regredi
ну Вы сами ответили на свой вопрос

на шаредах всегда ограничены ресурсы, а WP любит еще и память есть
память вы порешали json-machine, но чудес-то не бывает - меньше памяти? значит - больше процессора

режьте на части, в идеале, если оно по API забирается - частями же и забирать, но тут исходите из ваших условий
Ответ написан
YBB
@YBB
Лимит 300 секунд на выполнение

Информация к размышлению: как правило у php-cli нет лимита на время выполнения, а у curl нет лимита на размер файла (у ОС - есть). Я так импортировал 2GB xml в базу mysql (правда от php в конце концов пришлось отказаться - тормоз жуткий). К сожалению, не всякий шаред-хостинг подпустит к шеллу.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Предположу что ваш джисон это массив обьектов.

Загрузите его на домашнем компе и сохраните по кускам

{
  "items": [
    { "name": "a" },
    { "name": "b" }
  ]
}


{
  "items": [
    { "name": "a" }
  ]
}


{
  "items": [
    { "name": "b" }
  ]
}
Ответ написан
@gayrat10103
Ответ написан
Комментировать
@veroni1337 Автор вопроса
Всем спасибо за ответы. В итоге переехал на vps сервер. Так же на wordpress установил плагин cavalcade https://github.com/humanmade/Cavalcade, для устойчивой работы с wp cron. Написал свой небольшой скрипт, который помощью библиотеки https://github.com/halaxa/json-machine читает файл с массивом объектов не нагружая оперативную память. Затем просто создаю запись на основе полученных данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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