栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

详解PHP接口访问频率限制

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解PHP接口访问频率限制

本篇文章给大家介绍PHP接口访问频率限制,希望对需要的朋友有所帮助!

发现网上很多限制都只是1分钟(或者某个时间)内访问的限制。

比如1分钟限制10次 那我在59秒的访问了10次,然后key 又过期了,接下来1分钟又可以访问了 。这种限制根本就不合理。

所以有了我的想法。

直接上代码吧。

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等。

key过期时间也是可以添加的。

推荐:《PHP视频教程》

以上就是详解PHP接口访问频率限制的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/262586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号