php限制用户调用app接口的刷新频率,1秒不能达到20。看了很多类似的,但不看懂什么意思,是要具体的建新表保存访问者的信息还是怎么样。(新手程序员)能不能说下怎么弄,最好能有代码。
nginx层面做限制。
可以使用openresty,用lua来写,每次请求都接口自增一次访问记录,可以把值记录到redis中。
在单位时间内达到最大限制,返回错误的提示码。
不建议在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进行识别的,存在误杀的可能.