php限制用户调用app接口的刷新频率,1秒不能达到20

zhai斋
  • 95

php限制用户调用app接口的刷新频率,1秒不能达到20。看了很多类似的,但不看懂什么意思,是要具体的建新表保存访问者的信息还是怎么样。(新手程序员)能不能说下怎么弄,最好能有代码。

回复
阅读 3.8k
2 个回答
✓ 已被采纳

不建议在PHP里面做,可以考虑在Nginx和防火墙iptables里面做.
比如在Nginx里可以这样配置:

在http里server前加入:
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
在server里加入:
limit_req zone=allips burst=5 nodelay;
超过每秒20次连接,则把IP加入黑名单,直接deny掉这些IP.

注意,上面提到的用户都是以IP进行识别的,存在误杀的可能.

nginx层面做限制。
可以使用openresty,用lua来写,每次请求都接口自增一次访问记录,可以把值记录到redis中。
在单位时间内达到最大限制,返回错误的提示码。

宣传栏