workman做的API服务,大家有没有什么好的接口频次调用限制的方法?

AccessDenied

workman做的API服务,大家有没有什么好的接口频次调用限制的方法?

不想使用重武器,因为是轻量级的,不能占用太多的资源。

3008 2 0
2个回答

AccessDenied

只是简单的限制被调用的接口,不用标记用户进行限制,因为那一端是硬件,处理是个动作,所以不能调用太快了

  • 暂无评论
six

数据发给硬件的时候记录个时间,当前时间减去上次发送的时间小于某个值就忽略不发送,这样就可以严格限制发到硬件的数据频率了。

Gatewayworker的话就用$_SESSION记录时间。workerman的话就用$connection对象记录,比如workerman

$time = time();
if (isset($connection->lastSendTime) && $time - $connection->lastSendTime < 某个值) {
    return;
}
$connection->lastSendTime = $time;
$connection->send('xxxxx');
  • AccessDenied 2019-11-23

    谢谢,是个思路,不过对面的请求是无状态的,不会带cookies,session没用的。但是想起来业务有个缓存服务,针对硬件控制的,记录下上次访问时间就好了,比对一下。

年代过于久远,无法发表回答
🔝