站三界导航
首页 PHP代码详解PHP接口访问频率限制

详解PHP接口访问频率限制

  • PHP代码
  • 来源:站三界导航
  • 97阅读
  • 2022-07-01

/**
 * 检测用户接口访问频率

 */

function api_frequency_visits ($uid) {

    $key = "user:{$uid}:api:frequency";

    $redis = new Redis();

    $redis->connect('127.0.0.1');

    $data = $redis->hGetAll($key);

    //需要删除的key

    $del_key = [];

    //时间内访问的总次数

    $total = 0;

    //时间内最大访问次数

    $max_frequency = 10;

    //当前时间

    $now_time = time();

    //限制时间

    $limit_time = 60;

    foreach ($data as $time=>$count) {

        if ($time < $now_time - $limit_time) {

            $del_key[] = $time;

        } else {

            $total += $count;

        }

    }

    //存在需要删除的key

    if ($del_key) {

        $redis->hDel($key, ...$del_key);

    }

    if ($total >= $max_frequency) {

        return false;

    }

    return $redis->hIncrBy($key, $now_time, 1);

}

$uid = 1;

$result = api_frequency_visits($uid);

if (!$result) {

    echo  json_encode(['code'=>0, 'msg'=>'操作过于频繁', 'data'=>[]]);die;

}

echo  json_encode(['code'=>1, 'msg'=>'', 'data'=>[

    'uid'=>$uid,

    'other'=>rand()

]]);die;

限制时间,限制次数这些都可以修改,包括根据用户id也可以换成自己想要的限制,比如IP等。 本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/8972.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。