热门关键字:
jquery > jquery教程 > jquery教程 > php限流如何实现

php限流如何实现

285
作者:管理员
发布时间:2021/6/2 17:52:47
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=4856
  什么是接口限流


  那么什么是限流呢?顾名思义,限流就是限制流量,包括并发的流量和一定时间内的总流量,就像你宽带包了1个G的流量,用完了就没了,所以控制你的使用频率和单次使用的总消耗。通过限流,我们可以很好地控制系统的qps,从而达到保护系统或者接口服务器稳定的目的。


  接口限流的常用算法


  计数器法


  计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,counter就加1,如果counter的值大于100并且该请求与第一个请求的间隔时间还在1分钟之内,那么说明请求数过多;如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置counter,具体算法的示意图如下:


  伪代码如下:class CounterDemo{


  private  $timeStamp;


  public  $reqCount=0;


  public  $limit=100;//时间窗口内最大请求数


  public $interval=1000; //时间窗口 ms


  public function __construct()


  {


  $this->timeStamp=time();


  }


  public  function grant(){


  $now=time();


  if($nowtimeStamp+$this->interval){


  //时间窗口内


  $this->reqCount++;


  return $this->reqCount<=$this->limit;


  }else{


  // 超时后重置


  $this->timeStamp=time();


  $this->reqCount=1;


  return true;


  }


  }


  }




如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:jquery
友荐云推荐