Задать вопрос

Как бы Вы организовали синхронизацию внешней базы данных с OpenCart?

Есть приложение со своей собственной базой данных. На другом сервере есть OpenCart 2.0.
Регулярно (например, раз в час) нужно создавать товары, которые есть в первом приложении, но отстутствую в OpenCart, а так же делать частичное обновление уже существующих (например, только цену).

Как бы вы реализовали оптимально этот процесс? С точки зрения максимальной простоты со стороны OpenCart. Считаем, что приложение особо ничем не ограничено, а OpenCart располагается на шаред хостинге (не обязательно, но как вариант)

Какие могут быть подводные камни?

UPD:
Уточню, что сделать любые изменения со стороны приложения с основной базой - труда не составляет. REST уже в принципе есть, добавить поле времени - не проблема. Дамп сделать - тоже.
Основной вопрос в том, как лучше всего поступить, с наименьшим вмешательством в Опенкарт.
Например, было бы круто, если бы была ссылка на метод типа:
Product->create(array('name' => $json['name'], 'description' => $json['description']));
Product->getByName($json['name'])->update(array('price' => $json['price']));


Но, как я понял, так просто не получится.

Так же, есть какие-то плагины импорта - но их надо настраивать. Все по-разному. Есть платные, есть бесплатные.

Так же, с учетом того, что синхронизировать нужно постоянно и как можно чаще, то возникает вопрос, с чьей стороны должен идти запрос? От Опенкарта или от приложения? Опенкарт должен стараться получить данные, или база должна стараться их импортировать?

Лучшее решение то, которое требует меньше действия над Опенкартом.

Было предложение по FTP загружать JSON, а опенкарт по крону будет добавлять из него товары (обновлять цены)
  • Вопрос задан
  • 4561 просмотр
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Зависит от количества товаров. Если их не очень много, то просто кроном можно обновлять.
Если товаров много, то надо искать другие пути - например, обновлять по частям.

Как часто в приложении меняются данные, которые надо на сайт выгружать?
Ну и т.к. у Опенкарта нет нормального api, то надо будет написать некоторую прослойку, которая будет искать/обновлять/добавлять товары. Модели там есть, конечно, но мне было крайне неудобно с ними работать при написании модуля для импорта товаров - слишком неудобно подавать туда данные.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
вар 1: там где бд - сделайте REST сервис по товарам
вар 2: в бд укажите поле времени создания/правки товара, а при необходимости синхронизации - делайте дамп товаров созданных / обновленных позже последней синхронизации.
вар 3: разрешите доступ к бд на чтение из opencart.
Ответ написан
@ustasby
Отдельный скрипт, запускаемый по крону и реализующий запись в базу данных, там особо сложного ничего нет, количество товаров роли не имеет, да и нагрузку можно распределять.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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