php - 如何减少我的网站进行的 API 调用量
问题描述
情况如下:
我有一个 PHP 网站,它连接到类似亚马逊的 API 以检索数千种产品的数据。
对于每个产品,我都会得到一个 XML。我“file_get_contents”那个 XML 并在我的网站上回显数据。在运行中,因此无需将这些 XML 备份/保存到我的网络服务器。如果数据(如股票信息)在远程站点(亚马逊之类)发生变化,则股票信息会立即在我的网站上可见。
我希望你了解我的情况。没有问题:
几天后,类似亚马逊的网站返回“请求过多 429”错误,并且我的网站上不再有数据。
2年没有问题。但现在我认为亚马逊之类的网站收紧了速率限制,或者我获得了越来越多的访问者(真正的访问者或搜索机器人)。
Amazon like 的速率限制设置为每小时 1200 个请求。我的网站在 1 小时内获得了超过 2000 次点击,所以我了解错误的原因。
现在......避免未来错误的最佳方法是什么?
我是否需要将这数千个 XML 文件存储到我的网络服务器或数据库中,这样我就不必多次连接到 API。
或者有没有其他解决方案?也许是超时?还是我应该“要求”谷歌不要多次索引我的网站?或者可以通过httaccess中的缓存来完成吗?如果是...请给我一段代码,我可以用它来帮助我吗?
我使用以下代码。1 小时内的所有 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
}
解决方案
推荐阅读
- node.js - 动态创建索引是否正常?
- wordpress - Outlook 从 Wordpress 插件联系表 7 中回复错误的电子邮件
- html - 扩展/最小化手风琴无法正常工作
- ios - Agora SDK 视频无法正常播放,甚至本地视频也无法快速显示
- php - Laravel 5.6 试图获取非对象的属性
- powershell - 根据文件名的子字符串创建文件夹
- python - **在**主要版本中升级 Python 时是否需要删除 pyc 文件?
- java - springboot/jpa 无法使用用户名“@localhost”使用密码连接到 mysql 否?
- python - 如何提取数据框列中所有数字的前 2 位数字?
- reactjs - 重用通用组件函数