За последние 24 часа нас посетили 20265 программистов и 1082 робота. Сейчас ищут 754 программиста ...

Обмен данными между сайтами

Тема в разделе "PHP для новичков", создана пользователем Дюран, 28 окт 2020.

  1. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    251
    Симпатии:
    19
    Приветствую.
    Вопрос в том что может кто пришел к какому то, может не универсальному, но из качественных вариантов как сделать экспорт данных с одного сайта A и импорт на второй B.
    Сайты между собой не связаны, разные проекты, хотя похожие конечно.
    Например люди регаются на сайте А, и мне надо на сайт B импортировать и создать аккаунты для них, чтобы они и на него могли входить.
    Или например на сайте А, или еще например А1 делают заказы, и все они собираются в том числе на сайт B.
    И всегда нужно данные отправлять.
    Я вижу такой набор вопросов:
    1) Как организовать безопасное общение.
    Ну тут в принципе не сложно, сайт на который стучат, будет ожидать api ключ, в гете например
    2) Какая сторона должна этим заниматься?
    2.1) Сайт А должен отправлять свои новые данные, а B получать и импортировать?
    2.2) Или сайт B должен запрашивать с сайта A данные?
    На каком сайте в общем крон задача должна этим заниматься.
    3) Как определять какие данные уже экспрортированы?
    Ну все данные отправлять не вариант, поэтому только тех которых нет.
    Мне кажется всякими метками с датами или номерами последних id-шек не сильно надежно.
    Например это в случае с 2.1) думаете каждой отправляемой строке надо поставить в соответствие флаг, экспортирована ли запись?
    Т.е., крон задача будет делать:
    - транзакция старт
    - выбрали порцию данных для отправки
    - отправили через апи
    - Если апи вернуло ОК, то меняем этим записям пометки что они экспортированы
    - транзакция commit

    Но можно такое же и в случае если сайт импортит себе данные, каждой импортированной строке сохранять id который он имеет на сайте доноре, и потом каждый раз в запросе запрашивать данные с id большим чем последний.

    В общем если кто думал о таком, то поделитесь мыслями, сайтов походу в этом проекте будет становиться больше и сейчас все напоминает хаос, в одном месте курлом постят, в другом POST-ы от других принимают, сейчас вон уже хотят гетом с другого сайта запрашивать данные...
    --- Добавлено ---
    Я ж забыл про один еще тонкий момент, например данные экспортированы, но потом изменились, и их надо возможно заново экспортировать, ну id донора то мы сохраняем для этого.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    Имеете ввиду единую авторизацию и регистрацию?

    Так храните и делайте все на самом основном сайте А.
    И используете на всех остальных единую авторизацию и регистрацию
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    API-шки с системой событий.
    Тут всё от твоей фантазии зависит и от требований.
    Например, ты не хочешь, чтобы время общения АПИ-шек не входило во время загрузки страницы. А это может быть вполне так ощутимым временем.
    События добавления/изменения/удаления сущностей, которые необходимо синхронизировать, добавляют действие в очередь (например в таблицу в БД)
    На кроне висит скрипт, который чекает очередь и выполняет действия.

    Безопасность = https + ультрадлинные токены.
    По началу можно их и захардкодить. А там как пойдет.
     
  4. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    251
    Симпатии:
    19
    нет, пользователи там просто как пример то чем придется обмениваться.
    Эти сайты разными разработчиками ведутся, хостятся отдельно, нет общей кодовой базы
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    Все равно.
    Я бы создал единый сервис/апи к которому обращались бы все сайты, для crud. С разделением прав и прочими плюшками.

    И никаких проблем с репликациями/синхронизациями