/**
* 滑动窗口限流
* Class SlidingWindow
* @package App\Common
*/
class SlidingWindow
{
protected $timeStamp; //当前的时间戳
protected $_is_open_minimum_check = false; //是否开启最小精度检查 默认不开启
protected $_minimum_time_range_size = 1; // 最小限制范围精度单位秒钟
protected $_minimum_time_range_qps = 50; // 最小范围精度对应的时间内允许的请求数量
protected $_maximum_time_range_size = 60; // 最大限制范围单位秒钟
protected $_maximum_time_range_qps = 3000; // 最大限制范围对应的时间内允许的请求数量
protected $key = 'sliding_window';
/** @var $redis \Redis */
public $redis;
public function __construct($redis)
{
$this->timeStamp = time();
$this->redis = $redis;
}
//设置是否开启最小精度的检查 false为关闭 true为开启
public function setOpenMininumCheck($open)
{
$this->_is_open_minimum_check = $open;
return $this;
}
//设置最小精度时间 单位秒
public function setMininumTime($time)
{
$this->_minimu