Limit Api Calls, api находится в шаблоне php - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь ограничить частоту выполнения вызова API.

Вызов API выполняется в шаблоне страницы

<?php   

$producturl = 'theapiurl';
$product_json = file_get_contents($producturl); 
$product_array = json_decode($product_json, true);  
$price = min(array_column($product_array['products'][0]['offerData']['offers'],'price'));
?>

some html
<?php echo $price ?>

Я хочу, чтобы API вызывался только один раз. например, каждые 12 часов (данные не часто меняются) и что, если шаблон загружается второй раз за эти 12 часов, API больше не вызывается, но вывод $ price все равно должен работать.

Этовозможно?

1 Ответ

1 голос
/ 16 октября 2019

Ответ зависит от того, какой у вас есть доступ к серверу, и насколько легко / быстро получить свежие данные.

Вы можете сделать так, как предлагает Gnudiff, и использовать команду cron, чтобы получить данные по расписанию, а затем сохранить их в базе данных, чтобы вы могли вернуться в каждом ответе.

Или вы можете использовать хранилище в памяти, например, Redis, для кэширования данных. Когда пользователь вызывает конечную точку, вы проверяете кеш, чтобы увидеть, существует ли он. Поскольку они не будут существовать, извлеките ваши данные, сохраните их в кеше с TTL на данных, срок действия которых истекает в конце 12-часового периода, и верните их пользователю. Все следующие запросы следуют одному и тому же процессу, возвращая его из кэша, если он существует, или получая свежие данные, если его нет, и затем возвращая их пользователю.

...