Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обмен данными между сайтами


Автор: kahegal 22.10.2015, 22:40
Прошу поделится своим опытом или предположениями.
Вопрос такой. Существует два сайта, назовем сайт А и сайт B. У каждого свая база данных. В базе данных сайта А есть таблица которая также нужна сайту B. 
При редактировании этой таблицы создается (перезаписывается) XML файл на хостинге сайта А. Сайт B с определенным периодом времени, забирает этот xml файл и сверяет данные, если они обновились, перезаписывает их в таблицу БД. 
Вопрос в том как можно с сайта А сообщить сайту В , что данные в xml файле обновились, и пора их забрать ?

Автор: ksnk 22.10.2015, 22:55
Пусть сайт А сделает пост запрос на B.

Автор: kahegal 22.10.2015, 23:21
мне бы желательно что бы сайт А на сайте B функцию запускал.

Автор: ksnk 22.10.2015, 23:56
Цитата(ksnk @  22.10.2015,  22:55 Найти цитируемый пост)
Пусть сайт А сделает пост запрос на B. 

Цитата(kahegal @  22.10.2015,  23:21 Найти цитируемый пост)
что бы сайт А на сайте B функцию запускал. 

пост - это не функция? Что, тогда, такое функция?

Автор: kahegal 23.10.2015, 11:02
пример какой нибудь можете написать ?

Автор: ksnk 23.10.2015, 11:33
Пример? 
google - `php curl post request sample`.

Автор: Starikan 23.10.2015, 15:41
когда данные передаешь через хост, массивные строки задаются через другой канал и таким образом в БД сохраняется только частичная сессия после запроса на серевер через функцию

Автор: Envy 26.10.2015, 14:30
Я что-то ничего не понял, можно подробнее, пожалуйста? :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Obmen-dannymi-mezhdu-saytami-id56293c0cae20157f1c8b4567#findElement_E7045_562e0ee7ae2015e4078872ad_0

Автор: Envy 26.10.2015, 14:49
У меня есть несколько вариантов решения:
1) А готовит XML и делает POST запрос к B, передавая ему этот файл. В разбирает полученный XML и применяет изменения у себя.
1.1) А готовит XML, но не передает его B, а делает запрос к B просто сообщая что "у меня тут новые изменения, забирать тут - <url>". B, получив такой запрос знает, что есть новые изменения, и, когда будет готов забирает XML с А, и применяет изменения у себя.

2) При любом изменении в БД, А делает запрос к Б, содержащий только эти изменения. Этакий патч.

3) Master-slave репликация для одной таблицы между БД А и B. Mysql так умеет, хоть это и опасно(replicate-do-table).

4) (в дополнение к 1, 1.1 и 2) Если нужно именно RPC, то можно использовать SOAP

Pros:
1, 1.1 - Легко реализуется
2 - Чуть сложнее реализуется, но изменения доступны на B практически сразу. Изменения инкрементальные => небольшой размер передаваемых данных
3 - Все решается на уровне СУБД, ничего кодить вообще не надо

Contra:
1, 1.1) - Надо генерировать/парсить XML. При чем только для того, чтобы его передать. Относительно большая задержка между изменениями на А и применением этих изменений на B.

2) Если изменения на А частые - мы сами себя заддосим.

3) Чревато разнообразными неприятными последствиями, если используются ссылки на/из этой табицы, etc.

4) Не понятно, зачем вообще RPC, если можно обойтись простыми POST/GET запросами

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Obmen-dannymi-mezhdu-saytami-id56293c0cae20157f1c8b4567#findElement_E7045_562e1358ae2015ce10886f86_0

Автор: bobik02 4.11.2015, 09:18
Только не SOAP  smile 

A шлет POST запрос, B принимает ложит в очередь ну  а дальше запускаетсья процесс обратобтки xml.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)