Тема: Запрос наличия товара в другую базу

У нас сеть магазинов. Базы данных созданы на MS SQL сервер для каждого магазина отдельная база. Хотелось бы, когда покупатель  ищет и просматривает товар в интернет-магазине, наличие товара выбиралось из наличия в магазинах и копировалось в остатки на складах интернет-магазина.  Вопрос - Где можно вставить код запроса к внешней базе и как его можно представить?

Повысить оценку Понизить оценку

2

Re: Запрос наличия товара в другую базу

Мне кажется вопрос более, чем обширный. Скорее всего такого заветного одного места нет.

Возможно вам лучше проработать какой-то периодический скрипт синхронизации ваших
остатков и остатков внутри RS.

Повысить оценку Понизить оценку

Re: Запрос наличия товара в другую базу

admin пишет:

Мне кажется вопрос более, чем обширный. Скорее всего такого заветного одного места нет.

Возможно вам лучше проработать какой-то периодический скрипт синхронизации ваших
остатков и остатков внутри RS.

Я понимаю, что можно использовать событие cron, не ежеминутно, а раз в час - это вариант, но база у нас большая, в наличие до 25 тыс. позиций номенклатуры и это в 8 магазинах. Обновление будет происходить достаточно долго, а хочется режима реального времени.
Readyscript откровенно говоря я знаю плохо т.к. в процессе поиска подходящего движка интернет-магазина. Ваша разработка мне понравилась еще и наличием хорошей документации по программированию. Мне бы определиться в каких местах необходимо вставить код обращения к MS SQL, чтобы корректно отработать согласование остатков в магазинах и обновить из них остатки на складах интернет-магазина. А дальше программа будет использовать уже остатки на складах интернет-магазина. Естественно, что при входе в корзину, процедура определения наличия товара должна повториться, но для этого есть обработчик события связанный с корзиной.
Еще хотелось бы узнать посредством чего можно из Readyscript обратиться к базе MS SQL (ну типа через PDO)?

Повысить оценку Понизить оценку

4

Re: Запрос наличия товара в другую базу

Я думаю, что тут необходимо идти по привычному пути "rs+mysql", а вот из mssql обновлять в mysql остатки через выгрузки не проблема.

Но режим реального времени... мне кажется, тут нужен костыль вида: js на странице товара долбится в php, а тот долбится в вашу mssql и получает цифры остатков - такие решения я встречаю регулярно, только с фронтэнда это выглядит как "js долбится в непубличный api", а на чём этот апи реализован дело десятое, хоть на фокспро.

Если пойти с другой стороны - ваш mssql должен выплёвывать из себя что-то типа json, который кушает js на странице товара. Остатки вполне себе можно реализовать на публичной части, не обязательно всё внутри формировать.

п.с. и эта, имхану - лезть с mssql в мир линуксов какой-то неверный путь.

Re: Запрос наличия товара в другую базу

Polo Art пишет:

Но режим реального времени... мне кажется, тут нужен костыль вида: js на странице товара долбится в php, а тот долбится в вашу mssql и получает цифры остатков - такие решения я встречаю регулярно, только с фронтэнда это выглядит как "js долбится в непубличный api", а на чём этот апи реализован дело десятое, хоть на фокспро.

Мне кажется, что лучше использовать событийную модель реализованную в ReadySkript, ну или хотя бы в начале формирования страницы со списком товара, когда все данные по товарам выводимым на страницу известны, произвести обращение в MS SQL, получить остатки в магазинах и записать наличие на склады. Не уверен правильно ли думаю, но на выяснение придется потратить время, а меня торопят с принятием решения - какой интернет магазин выбрать выбрать!

Повысить оценку Понизить оценку

6

Re: Запрос наличия товара в другую базу

Еще хотелось бы узнать посредством чего можно из Readyscript обратиться к базе MS SQL (ну типа через PDO)?

Вы можете использовать все, что предлагает PHP, в том числе PDO.
(Стандартно в RS есть только собственный адаптер для Mysql).

Повысить оценку Понизить оценку

Re: Запрос наличия товара в другую базу

Независимо от выбора движка онлайн синхронизацию в разумные сроки выполнить не получится. Время открытия страницы - один из основных факторов, влияющих на юзабили сайта.

Для каталога товаров в 10 000 позиций я делал выгрузку в csv файл каждый 5 минут, затягивал его в таблицу средствами Mysql LOAD DATA INFILE (это встроенный механизм MySQL для загрузки больших объемов данных.). Затем скриптом обновлял остатки и цены. Этот метод работает молниеносно.  Временная таблица создается в доли секунды.
В моем случае скрипт загрузки вызывался внешней системой, но можно и cron у RS использовать.
Можно хоть раз в минуту выгружать. Фактически остатки и цены будут синхронизированы в режиме реального времени.

Re: Запрос наличия товара в другую базу

Ну или по крону связываться с внешней БД и порциями затягивать остатки. Тоже как вариант.
Но я бы на месте администратора системы запретил прямой доступ к базе

9 Отредактировано Polo Art (27.04.2019 00:35:23)

Re: Запрос наличия товара в другую базу

Ярослав пишет:

Для каталога товаров в 10 000 позиций я делал выгрузку в csv файл каждый 5 минут, затягивал его в таблицу средствами Mysql LOAD DATA INFILE (это встроенный механизм MySQL для загрузки больших объемов данных.). Затем скриптом обновлял остатки и цены. Этот метод работает молниеносно.  Временная таблица создается в доли секунды.
В моем случае скрипт загрузки вызывался внешней системой, но можно и cron у RS использовать.
Можно хоть раз в минуту выгружать. Фактически остатки и цены будут синхронизированы в режиме реального времени.

Похожим образом на вордпрессе цены обновляют smile и товары загружают. Там толком механизмов встроенных нет.
Однако, 5 минут - это не есть режим реального времени.
Реального времени - это при загрузке страницы идёт куда-то запрос, где данные актуальные.

Хотите пример подобного велосипеда, где данные через джонсик прилетают на страницу? И там не только цены, там весь каталог прилетает.

https://rs24.ru/catalog.htm

Явно у них внутри какой-то динозавр типа оракла всё крутит и ничего умнее придумать не смогли.
И ещё монстрик

https://b2b.el-com.ru/catalog

(требуется регистрация, бесплатно)
256 тыщ товаров

Так что, если хотите реального времени - пишем велосипед подобного рода. И выбор движка тут никакой роли не играет, чем легче движок (а rs тут сильно вне конкуренции), тем лучше.

Кстати говоря, по элкому - в б2б всё барахло навалено, что даже с производства снято, а вот что они снаружи сваяли на битре

https://www.el-com.ru/catalog/

и пропихнули туда всего 13256 товаров (на 7 марта)
может, им и хотелось больше (судя по выгрузкам актуальным, что для дилеров предоставляют), но усё, видимо, битра больше не шмагла.

10

Re: Запрос наличия товара в другую базу

Ярослав пишет:

Ну или по крону связываться с внешней БД и порциями затягивать остатки. Тоже как вариант.
Но я бы на месте администратора системы запретил прямой доступ к базе

Это ещё почему? Ограничение по айпи на уровне mysql и чем-то типа iptables закрыт порт для всех, кому не положено.

11 Отредактировано Ярослав (27.04.2019 12:27:32)

Re: Запрос наличия товара в другую базу

Похожим образом на вордпрессе цены обновляют smile и товары загружают. Там толком механизмов встроенных нет.

Я не знаю как там реализовано, но для моментальной загрузки большого массива данных во временную таблицу - это самый быстрый вариант.
Загрузка массива происходит мгновенно, в отличии от парсинга csv файла штатными средствами PHP. А потом переносите данные в рабочие таблице как хотите, но ничего быстрее, чем сделать это парой SQL запросов - нет.

Реального времени - это при загрузке страницы идёт куда-то запрос, где данные актуальные.

Топикстартер вверху пишет, что надо обновлять цены и остатки и при просмотре каталога товаров, а не только 1 товара.
А как быть при использовании фильтрации и т.д.? Делать постоянно запросы для каждого товара к внешней системе? А если там что то с серваком будет или еще какие то задержки, то тайм аута запроса будем ждать? 
Ну пусть интервал 5 минут, а 1 минута. Роли не играет, остатки товаров не успевают так быстро поменяться в учетной системе.  И 15 минут хватает. Я сужу по статистике сайта для оптовиков, где в день несколько сотен заказов и 10 000 товаров. Проблем не было.

Явно у них внутри какой-то динозавр типа оракла всё крутит и ничего умнее придумать не смогли.

Oracle скорее железный человек, который все может) Система спокойно переваривает сотни гигабайт данных. MySQL и PostgreSQL такого не снилось.

Это ещё почему? Ограничение по айпи на уровне mysql и чем-то типа iptables закрыт порт для всех, кому не положено.

Потому что взломав сайт можно получить доступ к базе, что не есть хорошо для безопасности.
Я до создания сайтов на RS (спасибо Набиуллина) занимался Oracle, АБС Банк XXI век и интеграцией с процессингом пластиковых карт.  Если бы я дал доступ к базе извне, меня бы уволили, может бы и дело завели. Как минимум можно за DDOS-ить  запросами к базе.

Хотите пример подобного велосипеда, где данные через джонсик прилетают на страницу? И там не только цены, там весь каталог прилетает.
https://rs24.ru/catalog.htm

Это совсем не то, о чем пишет ТС.  Весь фронтэнд построен на Vanilla JS, они просто список товаров получают со своего  же сайта, а не со сторонних серверов. Примерно так же, как RS при фильтрации каталога товаров, только интерфейс на стороне клиента строится, а не прилетает в готовом виде.

Самый яркий пример использования сторонних сервисов - сайты с бронированием.В особенности агрегаторы.  Там видно, с какими задержками обновляются данные при использовании запросов в различные сервисы

12 Отредактировано Polo Art (28.04.2019 11:40:33)

Re: Запрос наличия товара в другую базу

Ярослав пишет:

Потому что взломав сайт можно получить доступ к базе, что не есть хорошо для безопасности.
Я до создания сайтов на RS (спасибо Набиуллина) занимался Oracle, АБС Банк XXI век и интеграцией с процессингом пластиковых карт.  Если бы я дал доступ к базе извне, меня бы уволили, может бы и дело завели. Как минимум можно за DDOS-ить  запросами к базе.

А если база прямо тут лежит, че, типа сильно лучше?
ТС что предлагает? Как RSом подключаться к mssql.

Удаленно хотя бы можно ограничить четко нужным контентом, что сайту нужен, и всё.

Если "взломав сайт", то получаешь доступ ко всему, куда имеет доступ пользователь, который крутит сайт. Логично, что ппц. И какая тут база будет - внешняя, внутренняя или под кучей проверок - пофиг, поимеешь доступ ко всему.