@veroni1337

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

Здравствуйте. Мне нужно импортировать в записи большой json файл. Файл весит 500мб и в нем примерно 300 000 записей. Что бы не нагружать оперативную память использую для чтения https://github.com/halaxa/json-machine. Но столкнулся с проблемой, что на обычных хостингах недостаточно лимита на выполнения скрипта. Как можно импортировать такой объем данных в wordpress? Пробовал плагины для импорта по типу wp all import, но они зависают даже не загрузив этот файл. Можно было бы разделить файл и отдельными скриптами загружать эти данные, но этот файл мне нужно обрабатывать раз в неделю. Этот файл на стороннем сервере будет обновляться и должен каждый раз его загружать себе. Может нужно сделать разделение файла на мелкие части и создать так же для каждого json свой php скрипт который будет запускаться рекурсивно, что бы не попадать под лимит выполнения скрипта? Лимит 300 секунд на выполнение
  • Вопрос задан
  • 221 просмотр
Решения вопроса 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 читает файл с массивом объектов не нагружая оперативную память. Затем просто создаю запись на основе полученных данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы