亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

AtomicLimit

EasySwoole 提供了一個基于 Atomic 計數器的限流器。

原理

通過限制某一個時間周期內的總請求數,從而實現基礎限流。舉個例子,設置5秒內,允許的最大請求量為200,那么理論平均并發為40,峰值并發為200。

組件要求

  • php: >= 7.1.0
  • easyswoole/component: ^2.0

安裝方法

composer require easyswoole/atomic-limit

倉庫地址

easy-swoole/atomic-limit

在 EasySwoole 中使用

首先在 EasySwoole 全局的 mainServerCreate 事件(即項目根目錄的 EasySwooleEvent.phpmainServerCreate 函數) 中,進行限流器注冊

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.b3f21.cn
 * @document http://www.b3f21.cn
 * @contact http://www.b3f21.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

namespace EasySwoole\EasySwoole;

use EasySwoole\AtomicLimit\AtomicLimit;
use EasySwoole\Component\Di;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {
        ###### 配置限流器 ######
        $limit = new AtomicLimit();
        /** 為方便測試,(全局的)限制設置為 10 */
        $limit->setLimitQps(10);
        $limit->attachServer(ServerManager::getInstance()->getSwooleServer());
        Di::getInstance()->set('auto_limiter', $limit);
    }
}

App\HttpController\Index.php 中調用限流器:

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.b3f21.cn
 * @document http://www.b3f21.cn
 * @contact http://www.b3f21.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

namespace App\HttpController;

use EasySwoole\AtomicLimit\AtomicLimit;
use EasySwoole\Component\Di;
use EasySwoole\Http\AbstractInterface\Controller;

class Index extends Controller
{
    /** @var AtomicLimit $autoLimiter */
    private $autoLimiter;

    protected function onRequest(?string $action): ?bool
    {
        $this->autoLimiter = Di::getInstance()->get('auto_limiter');

        if ($action == 'test1') {
            # 調用限流器對 http://127.0.0.1:9501/test1 請求限制流量
            if ($this->autoLimiter->access($action, 1)) {
                return true;
            } else {
                $this->writeJson(200, null, 'test1 refuse!');
                return false;
            }
        } else if ($action == 'test2') {
            # 調用限流器對 http://127.0.0.1:9501/test2 請求限制流量
            if ($this->autoLimiter->access($action, 2)) {
                return true;
            } else {
                $this->writeJson(200, null, 'test2 refuse!');
                return false;
            }
        }

        return parent::onRequest($action);
    }

    public function test1()
    {
        $this->writeJson(200, null, 'test1 success!');
    }

    public function test2()
    {
        $this->writeJson(200, null, 'test2 success!');
    }
}

以上代碼表示,index/test1 這個限流器在每秒內允許的最大流量為 1,而 index/test2 這個限流器的最大流量為 2

我們也可以在 EasySwooleBase 控制器的 onRequest 方法中,進行請求攔截。例如在全局 onRequest 事件中,先進行流量檢驗,如果校驗通過,則進行下一步操作。

在 Swoole 中使用

以經典的暴力 CC 攻擊防護為例子。我們可以限制一個 ip-urlqps 訪問。

<?php
/**
 * This file is part of EasySwoole.
 *
 * @link http://www.b3f21.cn
 * @document http://www.b3f21.cn
 * @contact http://www.b3f21.cn/Preface/contact.html
 * @license https://github.com/easy-swoole/easyswoole/blob/3.x/LICENSE
 */

// example url: http://127.0.0.1:9501/index.html?api=1

require_once __DIR__ . '/vendor/autoload.php';

use EasySwoole\AtomicLimit\AtomicLimit;

$http = new swoole_http_server("127.0.0.1", 9501);

###### 配置限流器 ######
$limit = new AtomicLimit();
/** 為方便測試,(全局的)限制設置為3 */
$limit->setLimitQps(3);
$limit->attachServer($http);

$http->on("request", function ($request, $response) use ($http, $limit) {
    $ip = $http->getClientInfo($request->fd)['remote_ip'];
    $requestUri = $request->server['request_uri'];
    $token = $ip . $requestUri;
    /** access 函數允許單獨對某個 token 指定qps */
    if ($limit->access($token)) {
        $response->write('request accept');
    } else {
        $response->write('request refuse');
    }
    $response->end();
});

$http->start();

注意,本例子是用一個自定義進程內加定時器來實現計數定時重置,實際上用一個進程來做這件事情有點不值得,因此實際生產可以指定一個 worker,設置定時器來實現。

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    99成人精品| 日本一区二区三区免费观看 | 午夜精品偷拍| 在线精品一区二区| 亚洲欧美日韩综合国产aⅴ| 国产精品区一区| 亚洲ai欧洲av| 亚洲久久在线| 午夜精品剧场| 亚洲一区三区视频在线观看| 一区在线视频观看| 在线不卡视频一区二区| 久久精品日韩欧美| 亚洲国产精品毛片| 欧美理论一区二区| 亚洲区欧美区| 久久久精品国产一区二区三区| 国产一区不卡在线观看| 欧美日韩国产欧| 国产精品v欧美精品v日韩| 免费看黄裸体一级大秀欧美| 在线日韩av永久免费观看| 欧美日韩在线高清| 欧美日韩专区| 亚洲午夜高清视频| 蜜桃久久精品乱码一区二区| 国产亚洲欧美另类一区二区三区| 老妇喷水一区二区三区| 欧美涩涩视频| 激情欧美国产欧美| 黑人一区二区三区四区五区| 亚洲性人人天天夜夜摸| 亚洲最新在线| 欧美在线高清| 久久66热这里只有精品| 精品国产免费人成电影在线观...| 亚洲国产一区二区三区a毛片| 黄色在线一区| 国产嫩草一区二区三区在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 亚洲va韩国va欧美va精四季| 欧美日本亚洲| 国产日韩一区| 国户精品久久久久久久久久久不卡| 好吊妞www.84com只有这里才有精品| 91在线播放视频| 国产亚洲精品久久飘花| 久久久久成人精品免费播放动漫| 久久久蜜桃一区二区人| 久久草视频在线看| 亚洲欧洲一区二区| 亚洲激情欧美| 福利视频一区二区三区| 亚久久调教视频| 黄色一区三区| 欧美在线日韩精品| 美女诱惑黄网站一区| 麻豆av一区二区| 欧美日韩国产探花| 久久国产一二区| 日韩免费电影一区二区三区| 在线观看视频日韩| 成人91免费视频| 中文字幕一区综合| 久久精品中文字幕一区二区三区| 噜噜噜噜噜久久久久久91| 午夜精品亚洲| 操人视频欧美| 欧美午夜欧美| 国产女主播一区二区| 国产精品vip| 成人欧美视频在线| 国产精品chinese| 国产精品18毛片一区二区| 欧美一区三区二区在线观看| 久久综合一区| 欧美三区在线| 久久99热只有频精品91密拍| 亚洲精品在线二区| 欧美一区二区三区在线播放 | 久久国产一区| 最新亚洲激情| 亚洲国产日韩综合一区| 久久欧美肥婆一二区| 欧美不卡福利| 乱一区二区三区在线播放| 99精品99| 欧美不卡一区| 欧美国产综合视频| 91久久国产综合久久蜜月精品| 鲁大师影院一区二区三区| 亚洲精品一区二| 好吊色欧美一区二区三区视频| 亚洲精品四区| 欧美777四色影| 久久综合九色欧美狠狠| 久久久久国产精品午夜一区| 国产精品播放| 亚洲成人精品电影在线观看| 国产传媒一区二区| 免费国产自线拍一欧美视频| 国内精品**久久毛片app| 欧美精品一区二区三区四区五区| 91久久精品一区二区别| 99精品久久| 亚洲小说欧美另类社区| 欧美 日韩 国产一区二区在线视频| 蜜桃视频在线观看成人| av成人午夜| 久久久久久精| 久久都是精品| 欧美一级专区| 香蕉国产精品偷在线观看不卡| 欧美日韩在线大尺度| 欧美大片专区| 欧美二区不卡| 国内一区二区三区在线视频| 欧美一区二区在线| 欧美激情1区| 欧美精品成人| 国内一区二区三区在线视频| 国产在线不卡| 最新亚洲激情| 国产亚洲一区在线播放| 国产一区二区三区奇米久涩| 国产日韩欧美二区| 国产精品亚洲一区| 久久国产精品毛片| www.一区二区三区| 国产伦精品一区二区三区高清| av一区二区三区免费| 岛国视频一区免费观看| 黑人巨大精品欧美一区二区小视频| 成人在线观看网址| 欧美精彩一区二区三区| 日韩欧美视频第二区| 91偷拍精品一区二区三区| 7777奇米亚洲综合久久 | 亚洲午夜极品| 国产亚洲综合精品| 99中文字幕| 日韩.欧美.亚洲| 欧美精品二区| 欧美亚洲自偷自偷| 国产一区二区视频在线免费观看| 美脚丝袜一区二区三区在线观看| 午夜精品短视频| 国产精品xxx在线观看www| 亚洲欧美不卡| 精品伦精品一区二区三区视频| 视频一区二区在线观看| 亚洲午夜av| 国产精品久久久对白| 亚洲免费在线精品一区| 亚洲人成网站在线观看播放| 久久男女视频| 亚洲一二三区在线| 国产精品久久777777毛茸茸| 国产伦精品一区| 欧美国产另类| 久色成人在线| 在线观看日韩片| 久久经典综合| 在线国产精品网| 久久久久久穴| 自拍视频一区二区三区| 亚洲欧美日韩国产一区| 日本在线视频不卡| 国产精品乱子乱xxxx| 欧美一区亚洲二区| 亚洲久久视频| 奇米视频888战线精品播放| 亚洲视频日本| 欧美一区二区三区成人久久片| 1024日韩| 日韩中文字幕一区二区| 亚洲在线电影| 中文字幕日韩一区二区三区不卡 | 另类小说综合网| 中文网丁香综合网| 图片区小说区区亚洲五月| 久久精品动漫| 国产在线成人| 日韩成人在线资源| 1区1区3区4区产品乱码芒果精品| 亚洲欧洲国产日韩精品| 成人免费看片网站| 亚洲激情女人| 欧美成人有码| 麻豆av一区二区三区久久| 免费日韩av片| 在线欧美三区| 伊人色综合影院| 久久久久久久久一区| 久久国产66| aa级大片欧美三级| 欧美亚州在线观看| 亚洲精品在线免费看| 精品视频第一区| 69堂成人精品视频免费|