архитектура для получения и хранения данных запроса API - PullRequest
0 голосов
/ 14 января 2020

Это больше архитектурный вопрос. Внешняя платформа имела информацию о продукте и цене, скажем, книги. Доступен API для получения этой информации.

Я прочитал, что должна быть возможность создать функцию в Javascript и подключить Javascript к странице, на которой вы хотите отобразить данные. мой собственный сайт. Это будет означать, что для каждого запроса страницы выполняется API-вызов. Поскольку запрашиваемая информация меняется максимум раз в день, это не является наиболее эффективным решением.

Может кто-нибудь посоветовать лучшее решение? Что-то в направлении аналогичной функции php или javascript, которая выполняет запрос в фоновом режиме, планирует обновление и импортирует данные в mysql? Если так, то какой язык будет наиболее распространенным.

Мне нужно решение для среды Joomla / php / mysql

Ответы [ 2 ]

0 голосов
/ 14 января 2020

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

Посмотрите на что-то вроде Redis . Здесь также доступна статья: https://www.compose.com/articles/api-caching-with-redis-and-nodejs/

0 голосов
/ 14 января 2020

Вот простая идея - извлекать и хранить результаты из API (те, которые, по вашему мнению, не изменятся через день), либо на диске, либо в базе данных, а затем использовать эти сохраненные результаты, чтобы получить то, что в противном случае вы бы сделали извлечены из API.

Поскольку хранить что-либо во внешнем интерфейсе JS при перезагрузке страницы не так просто, вам необходимо использовать PHP для этого. Исходя из того, что дано, у вас, кажется, есть два способа вызова API:

  • через внешний интерфейс JS (no- go)
  • через ваш PHP бэкэнд (исправно для go)

Теперь вам нужно следить за тем, чтобы ваши результаты синхронизировались каждые (скажем) 24 часа.

Добавьте фрагмент к вашему PHP код, который содержит переменную $lastUpdated (или что-то подобное), и присваивает ему значение "stati c" текущего времени (НЕ используя time()). Теперь добавьте пару операторов, чтобы обновить сохраненные результаты if, текущее время по крайней мере на 24 часа больше, чем $lastUpdated, с последующим обновлением $lastUpdated до текущего времени.

Это должно дать вам то, что вам нужно с одним вызовом API в день.

PS: я не эксперт в PHP, но вы наверняка можете разобраться с датой и временем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...