【发布时间】:2019-10-16 17:36:52
【问题描述】:
我正在尝试限制 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 输出应该仍然有效。
这可能吗?
【问题讨论】:
-
修改后还是太宽泛了。问题是,你将如何调用代码?从命令行,它是网站的一部分,等等?
-
老实说,我在原始帖子中包含了所有这些信息。它在一个网站上,在一个 php 页面模板中。所以每次访问者访问第 x 页时,都会运行此脚本/模板,我需要来自 api 调用的数据来生成页面,但数据不会经常更改。所以每 12 小时抓取一次数据并使用该数据 12 小时就可以了。只是不确定我想要什么是可能的
-
确定这是可能的,但一般来说,您不会直接从网页调用它们,而是从 Cron 作业或 Windows 调度程序调用它们。如果您需要将其保留在网页中,任何人都可以随意调用它,您只需要放置一些时间跟踪器,使页面在每天调用超过一次时不会调用 API。您确实需要能够将时间写入外部文件或数据库,以进行检查。
-
基本上您需要的是这里列出的解决方案之一stackoverflow.com/q/16190783/50003 如果您无权访问或不想使用一个,您也可以使用文件而不是数据库。跨度>
标签: php api cdn rate-limiting