首页 > 解决方案 > 限制 Api Calls,api 在 php 模板中

问题描述

我试图限制 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 ?>

我想要的是例如每 12 小时调用一次 api(数据不会经常更改),并且如果在 12 小时内第二次加载模板,则不会再次调用 api,但 $price 输出应该仍然工作。

这可能吗?

标签: phpapicdnrate-limiting

解决方案


答案取决于您对服务器的访问权限以及获取新数据的容易/快速程度。

您可以按照 Gnudiff 的建议进行操作,并使用 cron 命令按计划获取数据,然后将其存储在数据库中,以便您在每个响应中返回。

或者你可以使用像 Redis 这样的内存存储来缓存数据。当用户调用端点时,您检查缓存以查看它是否存在。由于它不存在,因此请获取您的数据,将其存储在缓存中,并在 12 小时结束时过期的数据上使用 TTL,然后将其返回给用户。以下请求都遵循相同的过程,如果存在则从缓存中返回,如果不存在则获取最新数据,然后将其返回给用户。


推荐阅读