Php 如何减少我的网站进行的API调用数量

Php 如何减少我的网站进行的API调用数量,php,api,limit,rate,Php,Api,Limit,Rate,情况如下: 我有一个PHP网站,它连接到类似于Amazon的API来检索数千种产品的数据 对于每个产品,我都会得到一个XML。我将XML“归档”并在我的网站上回显数据。在运行中,因此无需将这些XML备份/保存到我的Web服务器。如果数据(如股票信息)在远程站点(如亚马逊)发生更改,股票信息将立即显示在我的网站上 我希望你能理解我的处境。没有问题: 几天后,类似亚马逊的网站返回“太多请求429”错误,我的网站上再也没有数据了 两年来都没有问题。但现在我认为类似亚马逊的网站收紧了费率限制,否则我会有

情况如下:

我有一个PHP网站,它连接到类似于Amazon的API来检索数千种产品的数据

对于每个产品,我都会得到一个XML。我将XML“归档”并在我的网站上回显数据。在运行中,因此无需将这些XML备份/保存到我的Web服务器。如果数据(如股票信息)在远程站点(如亚马逊)发生更改,股票信息将立即显示在我的网站上

我希望你能理解我的处境。没有问题:

几天后,类似亚马逊的网站返回“太多请求429”错误,我的网站上再也没有数据了

两年来都没有问题。但现在我认为类似亚马逊的网站收紧了费率限制,否则我会有越来越多的访问者(真正的访问者或搜索机器人)

Amazon like的速率限制设置为每小时1200个请求。我的网站在一小时内点击量超过2000次,所以我理解了错误的原因

现在。。。避免未来错误的最佳方法是什么

我是否需要将这数千个XML文件存储到我的Web服务器或数据库中,这样我就不必多次连接到API

或者还有其他解决办法吗?也许暂停一下?或者我应该“要求”谷歌不要多次为我的网站编制索引吗?或者可以用httaccess中的缓存来实现吗?如果是。。。你能给我一段代码,我可以用它来帮我吗

我使用以下代码。一小时内所有2000次点击都使用以下代码:

$url = "https://amazonlikewebsite.com/catalog/v4/lists/?ids=123&limit=30&dataoutput=refinements&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxx&format=xml";
                    
$content = file_get_contents($url);
$xml = simplexml_load_string($content);
                    
foreach ($xml->products as $product) {

    // echo data of the products
}

最好的方法是缓存结果,只有当结果超过一定年龄,并且您还没有超过您的速率限制时,才重新蚀刻。这意味着您需要确定亚马逊的费率限制,以及数据的最大可接受年限。您可能可以在文件系统中缓存结果,因为您只需要跟踪文件系统将告诉您的年龄。@kmoser在他们的评论中介绍了您,我要补充的是,使用Memcache存储结果可能是一个更有效的解决方案,因为它将减少大量文件IO的读写操作,或者进行数据库调用,并且使旧结果失效稍微简单一些。