我目前正在开展一个涉及从游戏API获取数据的网站的项目。
问题是,我必须达到特定的速率限制(目前每10分钟有500个请求),我不能超过。
除了每次有人请求数据时,我如何跟踪当前的请求数量,而不是写入/读取到文件/数据库(我猜这可能是最好的方法,可能会发生?少数几个人同时访问网站的问题)
网站调用一个php脚本,其中包含用户提供的从API获取数据的必要信息
答案 0 :(得分:0)
由于所有请求都是独立的,因此他们对其他请求一无所知。没有办法分享"共享" PHP中的变量。
最好的方法可能是创建数据库表并在每次执行请求时在其中创建记录。使用datetime列跟踪每个请求的时间。 这样,您可以通过计算过去10分钟内记录的数量,快速查看过去10分钟内完成的请求数量。
有时在桌面上运行一般删除查询。
这样的简单查询不会真正损害您的性能,除非您有一个真正繁忙的网站。
另一种解决方案可能是缓存API的结果并重复使用每个请求的结果。然后每隔几秒刷新API的结果(每2秒1个请求最终以300/10分钟结束)。但这需要数据实际上可以缓存并且可以重复使用。
答案 1 :(得分:0)
您可以使用APC。
Alternative PHP Cache(APC)是一个免费且开放的操作码缓存 PHP。它的目标是为其提供一个免费,开放,强大的框架 缓存和优化PHP中间代码。
您不需要任何外部库来构建此扩展程序。在请求之间保存和获取变量非常简单:
<?php
$bar = 'BAR';
apc_add('foo', $bar);
var_dump(apc_fetch('foo'));
echo "\n";
$bar = 'NEVER GETS SET';
apc_add('foo', $bar);
var_dump(apc_fetch('foo'));
echo "\n";
?>
Here是文档。