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

AtomicLimit

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

原理

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

組件要求

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

安裝方法

composer require easyswoole/atomic-limit

倉庫地址

easy-swoole/atomic-limit

在 EasySwoole 中使用

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

<?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 中調(diào)用限流器:

<?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') {
            # 調(diào)用限流器對 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') {
            # 調(diào)用限流器對 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 這個限流器在每秒內(nèi)允許的最大流量為 1,而 index/test2 這個限流器的最大流量為 2

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

在 Swoole 中使用

以經(jīng)典的暴力 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 函數(shù)允許單獨對某個 token 指定qps */
    if ($limit->access($token)) {
        $response->write('request accept');
    } else {
        $response->write('request refuse');
    }
    $response->end();
});

$http->start();

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

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    欧美精品一区在线发布| 国产亚洲精品v| 国产美女一区| 日本欧美精品久久久| 成人黄色在线免费观看| 国产日韩精品久久| 亚洲性色视频| 国产在线一区二区三区四区 | 亚洲在线免费| 黄色亚洲大片免费在线观看| 亚洲高清在线观看一区| 欧美激情视频一区二区三区| 精品国产免费一区二区三区| 国产欧美一区二区在线播放| 久久激情婷婷| 久久国产免费| 美女国产精品| 97在线电影| 国产精品一区二区免费看| 久久久国产精品一区二区三区| 国产精品久久久久9999高清| 国产精品视频| 91免费看网站| 国产不卡一区二区三区在线观看| 亚洲一区二区三区高清不卡| 亚洲伦理精品| 性xx色xx综合久久久xx| 久久xxxx精品视频| 国产精品日韩欧美一区二区| 黄色国产精品一区二区三区| 精品无码久久久久国产| 精品久久精品久久| 精品久久久久久一区二区里番| 久久久综合亚洲91久久98 | 日本一区免费| 日韩精品久久一区二区三区| 伊人色综合影院| 欧美精品激情| 一区二区福利| 久久在线精品| 久久综合久久综合这里只有精品| 亚洲第一综合| 亚洲国产精品久久久久婷婷老年| 99这里有精品| 99久久伊人精品影院| 欧美一区国产一区| 欧美91福利在线观看| 亚洲国产精品综合| 成人自拍爱视频| 亚洲欧美精品在线观看| 亚洲第一黄色| 国产视频在线观看一区| 中国成人在线视频| 性8sex亚洲区入口| 欧美亚州在线观看| 国产一区二区三区四区老人| 久久亚洲影院| 亚洲成人网上| 久久国产福利| 婷婷五月色综合| 一区二区三区四区国产| 久久久久网址| 日韩午夜视频在线观看| 国产私拍一区| 伊人色综合久久天天五月婷| 成人永久免费| 尤物网精品视频| 久草一区二区| 国产一区二区三区黄| 日产精品一线二线三线芒果| 一区二区av| 日本在线观看一区二区| 国产精品美女黄网| 亚欧精品在线| 不卡视频一区| 一区精品在线| 欧洲精品在线一区| 国产精品一区二区欧美| 亚洲不卡1区| 国产精品一区二区三区在线观 | 午夜精品剧场| 国产精品区一区| 激情久久中文字幕| 日本最新一区二区三区视频观看| 久久av在线| 国产在线日韩| 日韩欧美视频一区二区| 91av免费看| 雨宫琴音一区二区在线| 日韩精品在在线一区二区中文| 久久大逼视频| 亚洲一级一区| 杨幂一区欧美专区| 久久久99国产精品免费| 久久精品1区| 国产欧美欧美| 亚洲一二三区在线| 中文字幕一区二区三区四区五区| 国产厕所精品在线观看| 国产精品毛片在线| 欧美日韩国产精品一区二区亚洲| 国产综合动作在线观看| 免费视频一区二区三区在线观看| 国内自拍一区| 欧美另类视频在线| 亚洲日本一区二区三区在线不卡| 精品伊人久久大线蕉色首页| 99九九电视剧免费观看| 亚洲永久视频| 国产精品久久久对白| 国内精品福利| 宅男av一区二区三区| 神马影院我不卡午夜| 欧美久久久久久| 精品国产乱码久久久久久88av| 蜜乳av另类精品一区二区| 一本一道久久综合狠狠老精东影业| 欧美日韩综合网| 欧美午夜不卡| 国精品一区二区| 韩日成人在线| 一区二区亚洲精品| 亚洲性感美女99在线| 亚洲清纯自拍| 国产精品手机视频| 亚洲专区免费| 久久综合婷婷| 国产精品久久久久久久久婷婷| 5566中文字幕一区二区| 成人情视频高清免费观看电影| 国产精品区免费视频| 久精品国产欧美| 日韩精品久久久毛片一区二区| 亚洲激情电影在线| 欧美日韩视频在线一区二区观看视频 | 女主播福利一区| 国产精品v欧美精品v日本精品动漫| 一区二区三区国产福利| 欧美91视频| 亚洲人体偷拍| 久久一二三四| 国产自产在线视频一区| 秋霞在线观看一区二区三区| 亚洲精品高清国产一线久久| 欧美系列一区| 奶水喷射视频一区| 国产精品久久久久av福利动漫| 久久99精品国产一区二区三区| 你懂的网址一区二区三区| 亚洲成人自拍| 99精品99| 国产欧美日韩在线播放| 亚洲毛片aa| 中文在线一区| 久草精品电影| 国产精品国色综合久久| 国产精品有限公司| 麻豆久久久av免费| 欧美精品一区二区视频| 99热在线精品观看| 精品日产一区2区三区黄免费 | 日本在线免费观看一区| 国产一区日韩欧美| 久久亚洲精品伦理| 日韩精品欧美一区二区三区| 亚洲精品1区| 国产欧美丝袜| 激情久久一区| 极品日韩久久| 亚洲午夜伦理| 韩国成人av| 一区精品在线| 免费久久久一本精品久久区| 在线播放豆国产99亚洲| 精品无码久久久久国产| 影音先锋中文字幕一区| 精品国产一区二区三区麻豆免费观看完整版 | 噜噜噜噜噜久久久久久91| 精品国产乱码久久久久| 狠狠久久婷婷| 久久久一本精品99久久精品| 91久久精品国产91久久性色tv| 久久精品欧美| 国产麻豆综合| 亚洲一区二区在线免费观看| 久久九九精品| 欧美日韩一区二区三区免费| 久热精品在线| 欧美日韩精品不卡| 久久99九九| 蜜桃av一区| 激情另类综合| 午夜老司机精品| 国产乱码精品一区二区三区中文 | 亚洲毛片aa| 国产精品一区二区在线观看| 黑人一区二区三区四区五区| 欧美精品与人动性物交免费看| 国产九九精品| 18成人免费观看视频|