美文网首页
限制IP每分钟访问10次

限制IP每分钟访问10次

作者: WayneJoe | 来源:发表于2018-12-11 13:55 被阅读0次

IP请求限制,之前用过redis的set设置时间戳一分钟过期;也用过nginx的IP限流配置。前者,没法解决“用户在一分钟之内,最后一秒访问了9次,又在下一分钟的第一秒访问了10次”的问题;后者,又被迫均匀到秒级。思考并和别人探讨了一番,得出下面的解决方案:用redis的队列解决。

1、IP为键,时间戳为值,创建队列

$redis->lpush($ip, time());

2、同IP再次访问,判断队列长度

$len = $redis->llen($ip);
if ( $len < 10 ) {
    $redis->lpush($ip, time());
}else{
    // doing
}

3、长度超限,若首尾时间差< 60阻止;>=60剔除队首元素

$len = $redis->llen($ip);
if ( $len < 10 ) {
    $redis->lpush($ip, time());
}else{
    $firstTime  = lindex($ip, -1);
    $nowTime    = time();

    if ( ($firstTime - $currentTimt) < 60 ){
        exit('超出限制');
    }else{
        $redis->lpush($ip, $nowTime);
        $redis->rpop($ip);
    }
}

相关文章

  • 限制IP每分钟访问10次

    IP请求限制,之前用过redis的set设置时间戳一分钟过期;也用过nginx的IP限流配置。前者,没法解决“用户...

  • 限制ip访问

  • ch04:限制IP,增加密码修改功能

    限制IP 如果有IP访问限制的要求,可以使用SpringEl表达式描述具体IP或者IP子网: 这样就限制了用户必须...

  • IP地址伪造

    IP伪造有什么用?1:当后台限制IP访问,可以通过伪造IP访问该后台。2:如果基于访问IP来记录访问者的次数,而这...

  • 2018-09-25

    代理ip常用的一些功能。 1:突破自身ip访问限制,现在有许多的网站都对ip地址访问进行了限制,这时则可以通过代理...

  • (全)JAVA同一IP访问同一接口进行频率限制(分布式(京东抢购

    1.如何对同一IP访问同一接口进行每秒、每分钟、每小时频率限制 话不多说,直接开干,首先写一个注解类 使用注解的原...

  • 一步一步打造爬虫代理池

    最近在使用爬虫爬取数据时,经常会返回403代码,大致意思是该IP访问过于频繁,被限制访问。限制IP访问网站最常用的...

  • Tomcat限制IP访问

    Tomcat提供了参数RemoteAddrValve用于限制ip访问,在conf/server.xml中配置在

  • apache 限制IP访问

    找到apche的配置文件 一般会在conf/vhosts目录下可以针对某个项目进行限制IP访问 限制单个或者多个i...

  • 通过 lua 进行 nginx redis 访问控制

    Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。 1. 需求分...

网友评论

      本文标题:限制IP每分钟访问10次

      本文链接:https://www.haomeiwen.com/subject/ppishqtx.html