Это больше архитектурный вопрос. Внешняя платформа имела информацию о продукте и цене, скажем, книги. Существует API, доступный для получения этой информации.
Я прочитал, что должна быть возможность создать функцию в Javascript и подключить Javascript к странице, где вы хотите отобразить данные на моем собственном веб-сайте. Это будет означать, что для каждого запроса страницы выполняется API-вызов. Поскольку запрашиваемая информация изменяется только один раз в день, это не является наиболее эффективным решением.
Может кто-нибудь посоветовать лучшее решение? Что-то в направлении аналогичной функции php или javascript, которая выполняет запрос в фоновом режиме, планирует обновление и импортирует данные в mysql? Если так, то какой язык будет наиболее распространенным.
Мне нужно решение для среды Joomla / php / mysql
Всего 2 ответа
Вот простая идея - извлекать и хранить результаты из API (те, которые, по вашему мнению, не изменятся через день), либо на диске, либо в базе данных, а затем использовать эти сохраненные результаты, чтобы получить то, что вы иначе получили бы из API.
Поскольку хранить что-либо во внешнем интерфейсе JS при перезагрузке страницы нелегко, для этого нужно использовать PHP. Исходя из того, что дано, у вас, кажется, есть два способа вызова API:
Теперь вам нужно убедиться, что ваши результаты синхронизируются каждые (скажем) 24 часа.
Добавьте фрагмент к вашему PHP-коду, который содержит переменную $lastUpdated
(или что-то подобное), и присвойте ему «статическое» значение текущего времени (НЕ используя time()
). Теперь добавьте пару операторов для обновления сохраненных результатов, if
текущее время по крайней мере на 24 часа больше, чем $lastUpdated
, с последующим обновлением $lastUpdated
до текущего времени.
Это должно дать вам то, что вам нужно, с одним вызовом API в день.
PS: я не эксперт в PHP, но вы наверняка можете разобраться с датой и временем.
Похоже, вам нужен кеш, и вы не первый, кто сталкивается с этой проблемой - так что вам, вероятно, не нужно изобретать велосипед и создавать свой собственный.
Посмотрите на что-то вроде Redis . Здесь также доступна статья: https://www.compose.com/articles/api-caching-with-redis-and-nodejs/