专门提供api服务的服务器,在某些业务场景下,我们的服务器资源有限,不能无限制的去调用api,给服务器造成很大的压力,所以接口限流成为了不得不做的一项工作,下面为大家分享一段代码来实现接口限流。

<?php

class User
{
    public function getInfo()
    {
        //限制策略,根据自己情况来设定按什么策略设置限流,这里是根据调用api的客户端IP来限制
        $lockKey = 'userInfoLimit:'.$_SERVER['REMOTE_ADDR'];
        //这里可以自己去实现redis的封装
        $redis = Redis::getInstance();
        $num = $redis->incr($lockKey);
        if($num == 1) {
            //设置过期时间是1000毫秒
            $redis->pExpire($lockKey, 1000);
        }
        //这里设置的是QPS是200
        if ($num > 200) {
            //这里的代码可以提示调用端频率超出限制
        }
        //没超过限制。这里写你的业务代码...
        
    }
}

以上就是设置API限流的简易代码,大家可以根据自己的需求进行调整。

发表评论

电子邮件地址不会被公开。 必填项已用*标注