详解PHP接口访问频率限制【PHP教程】

!
也想出现在这里? 联系我们
信息

详解PHP接口访问频率限制,第1张

概述详解PHP接口访问频率限制

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

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

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

所以有了我的想法。

直接上代码吧。

/** * @param $uID * @return bool|int * 检测用户接口访问频率 */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接口访问频率限制全部内容,希望文章能够帮你解决详解PHP接口访问频率限制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞75 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容