五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

通用連接池

EasySwoole 實現的通用的協程連接池管理。

組件要求

  • php: >=7.1.0
  • ext-json: *
  • easyswoole/component: ^2.2.1
  • easyswoole/spl: ^1.3
  • easyswoole/utility: ^1.1

安裝方法

composer require easyswoole/pool

倉庫地址

easyswoole/pool

池配置

在實例化一個連接池對象時,需要傳入一個連接池配置對象 EasySwoole\Pool\Config,該對象的屬性如下:

配置項 默認值 說明 備注
$intervalCheckTime 15 * 1000 定時器執行頻率(毫秒),默認值為 15 s 用于定時執行連接池對象回收,創建操作
$maxIdleTime 10 連接池對象最大閑置時間(秒) 超過這個時間未使用的對象將會被定時器回收
$maxObjectNum 20 連接池最大數量 每個進程最多會創建 $maxObjectNum 個連接池對象,如果對象都在使用,則會返回空,或者等待連接空閑
$minObjectNum 5 連接池最小數量(熱啟動) 當連接池對象總數低于 $minObjectNum 時,會自動創建連接,保持連接的活躍性,讓控制器能夠盡快地獲取連接
$getObjectTimeout 3.0 獲取連接池中連接對象的超時時間 當連接池為空時,會等待 $getObjectTimeout 秒,如果期間有連接空閑,則會返回連接對象,否則返回 null
$extraConf 額外配置信息 在實例化連接池前,可以把一些額外配置放到這里,例如數據庫配置信息、redis 配置等等
$loadAverageTime 0.001 負載閾值 并發來臨時,連接池內對象達到 maxObjectNum,此時并未達到 intervalCheckTime 周期檢測,因此設定了一個 5s 負載檢測,當 5s 內,取出總時間/取出連接總次數,會得到一個平均取出時間,如果小于此閾值,說明此次并發峰值非持續性,將回收 5% 的連接

池管理器

池管理器可以做全局的連接池管理,例如在 EasySwooleEvent.php 中的 initialize 事件中注冊,然后可以在控制器中獲取連接池然后進行獲取連接:

下面以使用實現 easyswoole/redis 組件實現 Redis 連接池為例:

前提:先使用 composer 安裝 easyswoole/redis 組件:

composer require easyswoole/redis

定義 RedisPool 管理器

基于 AbstractPool 實現:

新增文件 \App\Pool\RedisPool.php,內容如下:

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

namespace App\Pool;

use EasySwoole\Pool\AbstractPool;
use EasySwoole\Pool\Config;
use EasySwoole\Redis\Config\RedisConfig;
use EasySwoole\Redis\Redis;

class RedisPool extends AbstractPool
{
    protected $redisConfig;

    /**
     * 重寫構造函數,為了傳入 redis 配置
     * RedisPool constructor.
     * @param Config      $conf
     * @param RedisConfig $redisConfig
     * @throws \EasySwoole\Pool\Exception\Exception
     */
    public function __construct(Config $conf, RedisConfig $redisConfig)
    {
        parent::__construct($conf);
        $this->redisConfig = $redisConfig;
    }

    protected function createObject()
    {
        // 根據傳入的 redis 配置進行 new 一個 redis 連接
        $redis = new Redis($this->redisConfig);
        return $redis;
    }
}

或者基于 MagicPool 實現:

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

namespace App\Pool;

use EasySwoole\Pool\Config;
use EasySwoole\Pool\MagicPool;
use EasySwoole\Redis\Config\RedisConfig;
use EasySwoole\Redis\Redis;

class RedisPool1 extends MagicPool
{
    /**
     * 重寫構造函數,為了傳入 redis 配置
     * RedisPool constructor.
     * @param Config $config 連接池配置
     * @param RedisConfig $redisConfig
     * @throws \EasySwoole\Pool\Exception\Exception
     */
    public function __construct(Config $config, RedisConfig $redisConfig)
    {
        parent::__construct(function () use ($redisConfig) {
            $redis = new Redis($redisConfig);
            return $redis;
        }, $config);
    }
}

不管是基于 AbstractPool 實現還是基于 MagicPool 實現效果是一致的。

注冊連接池管理對象

EasySwooleEvent.php 中的 initialize/mainServerCreate 事件中注冊,然后可以在控制器中獲取連接池然后進行獲取連接:

<?php

public static function initialize()
{
    // TODO: Implement initialize() method.
    date_default_timezone_set('Asia/Shanghai');

    $config = new \EasySwoole\Pool\Config();

    $redisConfig1 = new \EasySwoole\Redis\Config\RedisConfig(Config::getInstance()->getConf('REDIS1'));
    $redisConfig2 = new \EasySwoole\Redis\Config\RedisConfig(Config::getInstance()->getConf('REDIS2'));

    // 注冊連接池管理對象
    \EasySwoole\Pool\Manager::getInstance()->register(new \App\Pool\RedisPool($config,$redisConfig1), 'redis1');
    \EasySwoole\Pool\Manager::getInstance()->register(new \App\Pool\RedisPool($config,$redisConfig2), 'redis2');
}

在控制器中獲取連接池中連接對象,進行調用:

<?php

public function index()
{
    // 取出連接池管理對象,然后獲取連接對象(getObject)
    $redis1 = \EasySwoole\Pool\Manager::getInstance()->get('redis1')->getObj();
    $redis2 = \EasySwoole\Pool\Manager::getInstance()->get('redis2')->getObj();

    $redis1->set('name', '仙士可');
    var_dump($redis1->get('name'));

    $redis2->set('name', '仙士可2號');
    var_dump($redis2->get('name'));

    // 回收連接對象(將連接對象重新歸還到連接池,方便后續使用)
        \EasySwoole\Pool\Manager::getInstance()->get('redis1')->recycleObj($redis1);
        \EasySwoole\Pool\Manager::getInstance()->get('redis2')->recycleObj($redis2);

    // 釋放連接對象(將連接對象直接徹底釋放,后續不再使用)
    // \EasySwoole\Pool\Manager::getInstance()->get('redis1')->unsetObj($redis1);
    // \EasySwoole\Pool\Manager::getInstance()->get('redis2')->unsetObj($redis2);
}

池對象方法

方法名稱 參數 說明 備注
createObject 抽象方法,創建連接對象
recycleObj $obj 回收一個連接
getObj float $timeout = null, int $tryTimes = 3 在指定的超時時間 $timeout (秒)內獲取一個連接,會重復嘗試獲取 $tryTimes 次直到獲取到,獲取失敗則返回 null
unsetObj $obj 直接釋放一個連接
idleCheck int $idleTime 回收超過 $idleTime 未出隊使用的連接
itemIntervalCheck ObjectInterface $item 判斷當前客戶端是否還可用
intervalCheck 回收連接,以及熱啟動方法,允許外部調用熱啟動
keepMin ?int $num = null 保持最小連接(熱啟動)
getConfig 獲取連接池的配置信息
status 獲取連接池狀態信息 獲取當前連接池已創建、已使用、最大創建、最小創建數據
isPoolObject $obj 查看 $obj 對象是否由該連接池創建
isInPool $obj 獲取當前連接是否在連接池內未使用
destroy 銷毀該連接池
reset 重置該連接池
invoke callable $call,float $timeout = null 獲取一個連接,傳入到 $call 回調函數中進行處理,回調結束后自動回收連接
defer float $timeout = null 獲取一個連接,協程結束后自動回收

getObj

獲取一個連接池的對象:

<?php

go(function () {
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    $redis = $redisPool->getObj();
    var_dump($redis->echo('仙士可'));
    $redisPool->recycleObj($redis);
});

通過 getObj 方法獲取的對象,都必須調用 recycleObj 或者 unsetObj 方法進行回收,否則連接池對象會越來越少。

unsetObj

直接釋放一個連接池的連接對象,其他協程不能再獲取到這個連接對象,而是會重新創建一個連接對象

釋放之后,并不會立即銷毀該對象,而是會在作用域結束之后銷毀

recycleObj

回收一個連接對象,回收之后,其他協程可以正常獲取這個連接對象。

回收之后,其他協程可以正常獲取這個連接,但在此時,該連接還處于當前協程中,如果再次調用該連接進行數據操作,將會造成協程混亂,所以需要開發人員自行約束,當對這個連接對象進行 recycleObj 操作后不能再操作這個對象

invoke

獲取一個連接,傳入到 $call 回調函數中進行處理,回調結束后自動回收連接:

<?php

go(function () {
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    $redisPool->invoke(function (\EasySwoole\Redis\Redis $redis) {
        var_dump($redis->echo('仙士可'));
    });
});

通過該方法無需手動回收連接,在回調函數結束后,則自動回收

defer

獲取一個連接,協程結束后自動回收

<?php

go(function () {
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    $redis = $redisPool->defer();
    var_dump($redis->echo('仙士可'));
});

通過該方法無需手動回收連接,在協程結束后,則自動回收

需要注意的事,defer 方法是協程結束后才回收,如果你當前協程運行時間過長,則會一直無法回收,直到協程結束

keepMin

保持最小連接(熱啟動)。

由于 easyswoole/pool 當剛啟動服務,出現過大的并發時,可能會突然需要幾十個甚至上百個連接,這時為了讓創建連接的時間分散,可以通過調用 keepMin 方法進行預熱啟動連接。

調用此方法后,將會預先創建 N 個連接,用于服務啟動之后的控制器直接獲取連接:

預熱使用示例如下:

EasySwooleEvent.php 中的 mainServerCreate 中,當 Worker 進程啟動后,熱啟動連接:

<?php

public static function mainServerCreate(EventRegister $register)
{
    $register->add($register::onWorkerStart, function (\swoole_server $server, int $workerId) {
        if ($server->taskworker == false) {
            //每個worker進程都預創建連接
            \EasySwoole\Pool\Manager::getInstance()->get('redis')->keepMin(10);
            var_dump(\EasySwoole\Pool\Manager::getInstance()->get('redis')->status());
        }
    });
}

將會輸出:

array(4) {
  ["created"]=>
  int(10)
  ["inuse"]=>
  int(0)
  ["max"]=>
  int(20)
  ["min"]=>
  int(5)
}

keepMin 是根據不同進程,創建不同的連接的,比如你有 10Worker 進程,將會輸出 10 次,總共創建 10 * 10 = 100 個連接

getConfig

獲取連接池的配置:

<?php

$redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
var_dump($redisPool->getConfig());    

destroy

銷毀連接池。

調用之后,連接池剩余的所有鏈接都會被執行 unsetObj,并且將關閉連接隊列,調用之后 getObj 等方法都將失效:

<?php

go(function () {
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    var_dump($redisPool->getObj());
    $redisPool->destroy();
    var_dump($redisPool->getObj());
});

reset

重置連接池。

調用 reset 之后,會自動調用 destroy 銷毀連接池,并在下一次 getObj 時重新初始化該連接池:

<?php

go(function (){
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    var_dump($redisPool->getObj());
    $redisPool->reset();
    var_dump($redisPool->getObj());
});

status

獲取連接池當前狀態,調用之后將輸出:

<?php

go(function () {
    $redisPool = new \App\Pool\RedisPool(new \EasySwoole\Pool\Config(), new \EasySwoole\Redis\Config\RedisConfig(\EasySwoole\EasySwoole\Config::getInstance()->getConf('REDIS')));
    var_dump($redisPool->status());
});
array(4) {
  ["created"]=>
  int(10)
  ["inuse"]=>
  int(0)
  ["max"]=>
  int(20)
  ["min"]=>
  int(5)
}

idleCheck

回收空閑超時的連接

intervalCheck

調用此方法后,將調用 idleCheckkeepMin 方法,用于手動回收空閑連接和手動熱啟動連接

<?php

public function intervalCheck()
{
    $this->idleCheck($this->getConfig()->getMaxIdleTime());
    $this->keepMin($this->getConfig()->getMinObjectNum());
}

itemIntervalCheck

在內部定時器丟棄超時客戶端(閑置了超過指定時間,就先斷開)時,會觸發 itemIntervalCheck 函數,并將客戶端傳入,用戶通過這個函數可以實現判斷客戶端是否可用的邏輯。

該函數如果返回 true 代表可用(默認情況),返回false 將會導致該客戶端直接被丟棄。

可用于:維持客戶端心跳等。如 orm 中對其使用場景如下:維持 mysql 連接,減少 mysql 掉線 gone away 的幾率

<?php
/**
 * @param MysqliClient $item
 * @return bool
 */
public function itemIntervalCheck($item): bool
{
    /*
     * 如果最后一次使用時間超過 autoPing 間隔
     */
    /** @var Config $config */
    $config = $this->getConfig();
    if ($config->getAutoPing() > 0 && (time() - $item->__lastUseTime > $config->getAutoPing())) {
        try {
            // 執行一個sql觸發活躍信息
            $item->rawQuery('select 1');
            // 標記使用時間,避免被再次 gc
            $item->__lastUseTime = time();
            return true;
        } catch (\Throwable $throwable) {
            // 異常說明該鏈接出錯了,return 進行回收
            return false;
        }
    } else {
        return true;
    }
}

基本使用

定義池對象

<?php

class Std implements \EasySwoole\Pool\ObjectInterface
{
    function gc()
    {
        /*
         * 本對象被 pool 執行 unset 的時候
         */
    }

    function objectRestore()
    {
        /*
         * 回歸到連接池的時候
         */
    }

    function beforeUse(): ?bool
    {
        /*
         * 取出連接池的時候,若返回false,則當前對象被棄用回收
         */
        return true;
    }

    public function who()
    {
        return spl_object_id($this);
    }
}

定義池

<?php

class StdPool extends \EasySwoole\Pool\AbstractPool
{
    protected function createObject()
    {
        return new Std();
    }
}

不一定非要在創建對象方法 createObject() 中返回 EasySwoole\Pool\ObjectInterface 對象,任意類型對象均可

pool 組件版本 >= 1.0.2 后,提供了 魔術池 支持,可以快速進行定義池。

<?php

use \EasySwoole\Pool\MagicPool;

$magic = new MagicPool(function () {
    return new \stdClass(); // 示例,可以返回實現了 ObjectInterface 的對象
});

// 注冊后獲取
$test = $magic->getObj();
// 歸還
$magic->recycleObj($test);

魔術池構造方法的第二個參數,可以接收一個 configEasySwoole\Pool\Config 類),用于定義池數量等配置。

簡單示例

<?php

$config = new \EasySwoole\Pool\Config();
$pool = new StdPool($config);

go(function () use ($pool) {
    $obj = $pool->getObj();
    $obj2 = $pool->getObj();
    var_dump($obj->who());
    var_dump($obj2->who());
});

進階使用

基于 pool 實現的 Redis 連接池

[基于 pool 實現的 MySql 連接池]()

相關倉庫

easyswoole/redis-pool

主站蜘蛛池模板: 欧美成人国产精品高潮 | 999久久久精品 | 亚洲中文字幕无码中文字 | 欧美日韩视频网站 | 五月婷婷在线视频观看 | 五十岁熟韵母乱视国产 | 国产精品成人一区二区三区 | 国产视频久久久 | 爱爱精品 | 日韩欧美不卡在线 | 欧美成人黄色网 | 国产亚洲欧美在线视频 | 日本疯狂做爰xxxⅹ高潮视频 | 亚洲草逼 | 日本午夜三级视频 | 九九最新视频完整 | 黄色网页免费在线观看 | 精品国产乱码久久久久久芒果 | www99热| 日本爱爱网址 | 夜夜躁狠狠躁日日躁 | 艳妇乳肉豪妇荡乳av | 日本免费高清 | 97久久精品午夜一区二区 | 四川话毛片少妇免费看 | 91桃色国产在线播放 | 夜夜躁狠狠躁日日躁视频 | 日本黄色的视频 | 亚洲精品亚洲 | 日韩精品字幕 | 国内乱子对白免费在限 | 亚洲 另类 在线 欧美 制服 | 狠狠操一区二区 | 亚洲免费成人在线 | 性色m3u8视频在线观看 | 精品国产乱码久久久久久芒果 | 成人免费ā片在线观看 | 色图视频| 福利国产视频 | 五月丁香啪啪 | 天堂av手机在线 | 久久偷看各类wc女厕嘘嘘 | 一区二区三区视频在线看 | 亚洲h视频在线 | 亚洲奶汁xxxx哺乳期 | 亚洲色图校园春色 | 少妇做爰免费视看片 | 韩国三级a视频在线观看 | 欧美又黄又粗暴免费观看 | 黄色工厂这里只有精品 | 欧美日韩综合一区二区三区 | 亚洲色无码国产精品网站可下载 | 国产一区二区不卡在线 | 丝袜五月天 | 国产资源在线播放 | 97影院在线午夜 | 亚洲污片 | 青青视频免费观看 | 小sao货水好多真紧h视频, | 国产第二页 | 国产成人精品日本亚洲直播 | 亚洲色妞 | 香蕉av在线播放 | 国产毛片久久久久久美女视频 | 日韩黄色av| 伊人97| 红杏亚洲影院一区二区三区 | 婷婷在线综合 | 天堂网2021最新天堂手机版 | 久久国产精品免费一区二区三区 | 1024永久福利手机看片 | 国内精品偷拍 | 国产精品区一区二区三含羞草 | 成人av影视在线观看 | 丁香激情综合久久伊人久久 | 中文字幕亚洲综合久久菠萝蜜 | 日本无翼乌邪恶大全彩h | 人成午夜大片免费视频 | 成人午夜精品无码区 | 蜜臀久久99精品久久久无需会员 | 在线欧美中文字幕农村电影 | 天堂中文在线观看视频 | 69xxⅹ性视频免费 | 亚洲国产精品成人综合色在线婷婷 | 中文字幕日韩国产 | 51精产品一区一区三区 | 欧美性猛交ⅹxxx乱大交3 | 91成人在线播放 | 国产成人欧美综合在线影院 | 婷婷色中文字幕综合在线 | 久久精品tv | 国产精品美女久久久久av超清 | 中文字幕无码热在线视频 | 国产成人久久久 | 亚洲老妈激情一区二区三区 | 中文一区在线 | 亚洲男男网站 | 在线观看免费视频一区 | 男人的天堂网在线 | 亚洲久久一区 | 石原莉奈av调教中文字幕 | 美丽姑娘免费观看在线观看 | 一级a性色生活片久久毛片 一级a性色生活片久久毛片明星 | 亚洲精品一区二区不卡 | 337p日本欧洲亚洲大胆色噜噜 | 6699嫩草久久久精品影院 | 精品国产露脸精彩对白 | 中文字幕专区高清在线观看 | 北条麻妃一区二区三区在线视频 | 国产av一区二区三区 | 欧美日韩五月天 | 诱惑の诱惑筱田优在线播放 | 少妇又紧又深又湿又爽视频 | 韩日精品视频 | 欧美色影院 | 亚洲精品久久久一线二线三线 | 在线免费观看毛片 | 在线观看色 | 日韩成人在线观看 | 99久久婷婷国产综合亚洲 | 夜色福利院在线观看免费 | 久久婷婷五月综合97色直播 | 国产精品午夜一区 | av日韩av| 精品久久久久成人码免费动漫 | 国产在线精品拍揄自揄免费 | 亚洲精品综合欧美二区变态 | 极品美女扒开粉嫩小泬图片 | 天天看片黄色 | 分分操免费视频在线观看 | 强制中出し~大桥未久在线播放 | 久草免费在线观看 | 欧美午夜性春猛交 | 久久亚洲春色中文字幕久久久 | 黄色av一级片 | 日韩精品视频一区二区在线观看 | videosex抽搐痉挛高潮 | 亚洲最新中文字幕 | 国产亚洲精品久久久久秋 | 亚洲成熟毛多妇女av毛片 | 国产又滑又嫩又白 | 成人性生交大全免 | 日韩精品免费在线观看 | 久久久久国产一区二区三区小说 | 无码高潮爽到爆的喷水视频app | 天堂av在线免费 | 久久五月精品中文字幕 | 久久99蜜桃综合影院免费观看 | 久久99国产亚洲高清观看首页 | h成人在线观看 | 男人和女人做爽爽视频 | 少妇视频一区 | 黄色在线免费观看视频 | 99久久这里只有精品 | 国产精品乱码一区二区三区 | 亚洲3dmax成人 | 国产精品一区二区在线免费观看 | 国产成人区 | 91精品国产综合久久久蜜臀粉嫩 | 免费在线观看中文字幕 | 在线天堂√8 | 中文字幕在线播放第一页 | 国产亚洲papapa | 宅宅少妇无码 | 91嫩草国产露脸精品国产 | 久久久久伊人 | 亚洲天天摸日日摸天天欢 | 国产精品国产三级国产av剧情 | 天堂网一区二区三区 | 国产成人无码精品一区在线观看 | 麻豆av网| 性久久久久久 | av大片免费看 | 欧美激情精品久久 | 91福利社在线观看 | 日韩人妻无码一区二区三区久久99 | 亚洲中文字幕久久无码精品 | 日韩一级视频 | 18视频在线观看娇喘 | 一区二区三区视频在线 | 国产青青草视频 | 少妇又粗又猛又爽又黄的视频 | 久久久久久穴 | 日韩av网页 | 色噜噜狠狠狠狠色综合久 | 在厨房被c到高潮a毛片奶水 | 国产成人亚洲精品 | 久久久久99精品成人片试看 | 四虎色播| 天天射天天干天天色 | 亚洲性激情 | 国产真实乱 | 夜夜精品浪潮av一区二区三区 | 天堂亚洲网 | 国产日韩欧美一区二区东京热 | 亚洲欧美一级 | 日本二区三区视频 | 波多野结衣一区二区三区在线观看 | 国产亚州精品女人久久久久久 | 国产免费一区二区三区在线观看 | 久草在线观看福利 | 久久88| 性一交一乱一色一免费无遮挡 | 91欧美精品 | 日韩成人综合 | 男人的天堂视频 | 成人在线手机视频 | 欧美性猛交xxxx黑人交 | 日本一级黄色 | 伊人久久大香线蕉av超碰演员 | 久久人人爽亚洲精品天堂 | 欧美毛片在线观看 | 777亚洲精品乱码久久久久久 | 在线v片免费观看视频 | 日韩av无码社区一区二区三区 | 国产精品自在在线午夜免费 | 久久国产成人午夜av影院 | 伊人色图 | 丰满人妻熟妇乱偷人无码 | 中文字幕亚洲色妞精品天堂 | 中文字幕乱码亚洲无线码按摩 | 国产99久张津瑜在线观看 | 免费的污网站 | 国产欧美在线视频 | 小柔好湿好紧太爽了国产网址 | www亚洲欧美| 台湾av毛片| 国产伦精品一区二区三区在线 | 长河落日电视连续剧免费观看01 | 日本精品免费视频 | 日韩美女视频一区 | 色婷婷激情一区二区三区 | 91久久综合亚洲鲁鲁五月天 | 交专区videossex | 国产精品久久久久久久久 | 亚洲国产精品一区 | 寂寞少妇让水电工爽了一小说 | 欧美有码在线观看 | 久久免费看少妇 | 国产伦精品一区二区三区视频我 | 亚洲v欧美v日韩v国产v | 双性人bbww欧美双性 | 又大又紧又粉嫩18p少妇 | 黄色视网站 | 国产亚洲精品精华液 | jazzjazz国产精品久久 | 西川结衣在线观看 | 亚洲一二三区视频 | 干美女av | yy8090理论片在线大全中文 | 欧美大片一级 | 国产福利精品在线观看 | 国产欧美性成人精品午夜 | 免费播放av| 亚洲三级网 | 一个人看的www免费视频在线观看 | 亚洲综合色区中文字幕 | 一本大道久久a久久精品综合1 | 夜夜躁狠狠躁日日躁麻豆 | 一级全黄色片 | 五月天色婷婷综合 | 黑人玩弄人妻中文在线 | 欧美成人吸奶水做爰 | 国产69精品久久久久777 | 一个人看的日本hd免费 | 欧洲vi一区二区三区 | 日韩av在线影院 | 男人疯狂高潮呻吟视频 | 久久久久免费精品 | 欧美极品少妇xxxxⅹ喷水 | 色屁屁视频| 亚洲毛片av日韩av无码 | 国产视频91在线 | 日韩专区在线观看 | 噼里啪啦在线看免费观看视频 | 精品在线视频播放 | 欧美一级在线 | 四虎永久在线精品免费观看网站 | 欧美性折磨bdsm激情另类视频 | 2018天天拍拍天天爽视频 | 国产天天综合 | 亚洲v国产v欧美v久久久久久 | 日本123区 | 日本精品视频一区二区 | 一本本月无码- | 亚洲视频免费在线播放 | 男人天堂网在线视频 | 一本久久综合亚洲鲁鲁五月天 | 性色a码一区二区三区天美传媒 | a国产一区二区免费入口 | 黄色软件视频大全 | 天堂√| 国产做受高潮 | 国产又粗又硬又黄的视频 | 亚洲va中文在线播放免费 | 婷婷五月深深久久精品 | 亚洲色图网友自拍 | 日韩精品无码中文字幕一区二区 | 欧美亚洲国产精品 | 成人aaaa | 青青青草视频在线 | 狠狠色婷婷久久综合频道日韩 | 天天舔夜夜操 | 成人vr视频专区 | 一本色道久久综合狠狠躁篇的优点 | 少妇饥渴难耐 | 99色99| 国产清纯白嫩高中生在线播放 | 无套内谢大学处破女www小说 | 在线黄色免费网站 | 污污的网站在线免费观看 | 18黄暴禁片在线观看 | 在线观看中文字幕 | 国产乱淫av片免费看 | 亚洲v在线 | 国产99久久久国产精品~~牛 | 青青操在线观看视频 | 超碰五月天 | 午夜肉伦伦影院 | 国产av寂寞骚妇 | 特一级黄色 | 国产人成 | 天堂在线资源网 | 1111111少妇在线观看 | 波多野结衣一区二区 | 18禁黄久久久aaa片 | 少妇做爰水狂喷 | 亚洲综合一二三 | 国产精华av午夜在线观看 | 国产精品99久久久久久猫咪 | www.毛片com| 人人澡澡人人 | 久久久久久亚洲精品不卡4k岛国 | 亚洲国产精品无码久久久 | 久久av喷吹av高潮av萌白 | 亚洲国产一区二区a毛片 | 亚洲一级黄色大片 | 激情丁香 | 久久嫩草精品久久久精品才艺表演 | 日韩av片无码一区二区不卡电影 | 亚洲精品国产综合 | 中国少妇内射xxxhd免费 | 99久久人妻无码精品系列蜜桃 | 一级全黄少妇性色生活免费看 | 一区二区高清视频在线观看 | 久久一道本 | 大色综合色综合网站 | 泽村玲子av| 亚洲日夜噜噜 | 国产大片中文字幕在线观看 | 国产精品自在在线午夜 | zzzwww在线看片免费 | 成人av在线影院 | 岛国免费的毛片 | 91精品国产综合久久小美女 | 色一涩 | 国精产品乱码一区一区三区四区 | 性生交大片免费全片 | 国产亚洲欧美日韩精品一区二区三区 | 精品国产99高清一区二区三区 | 欧美jizz18| 美女黄频视频大全免费的国内 | 四虎在线免费视频 | 亚洲一区二区三区av无码 | 韩国一级黄色毛片 | 久久精品水蜜桃av综合天堂 | 亚州成人| 奶波霸巨乳一二三区乳 | 色八区| 久久伊人操 | 久久久网址 | 日本欧美不卡 | 国语啪啪 | 日本黄色片网址 | 波多野结衣理论片 | 日韩视频一区二区 | 国产做a爰片久久毛片a我的朋友 | 久久久妇女国产精品影视 | 成人免费无遮挡无码黄漫视频 | 欧美久草 | 中文字幕日韩在线视频 | 日韩操比 | 狠狠色综合网久久久久久 | 伊人久久大香线蕉综合5g | 99久久精品免费看国产免费粉嫩 | av手机在线看片 | 亚洲国产精品肉丝袜久久 | 国产精品原创巨作av | 色婷婷色丁香 | 亚洲成人a∨ | 人妻熟妇乱又伦精品视频 | 国产尤物精品自在拍视频首页 | 无码一区二区三区免费 | 亚洲码国产日韩欧美高潮在线播放 | 免费久久久久 | 久久66热人妻偷产精品 | 97精品超碰一区二区三区 | 国产黄色a级 | 久久久激情 | 男女日批在线观看 | 天天干人人 | 337p嫩模大胆色肉噜噜噜 | 国产又黄又硬又湿又黄的播出时间 | 国产午夜激情视频 | 欧洲黄色录像 | 亚洲色欧美另类 | 亚洲色图视频网站 | 欧美第三页 | 国产午夜精品一区二区理论影院 | 老熟妇乱子伦牲交视频 | 我要看黄色1级片 | 久久久久久久人妻无码中文字幕爆 | 韩日av在线播放 | 中文字幕人妻熟女人妻a片 国产精品人妻系列21p | 制服.丝袜.亚洲.中文.综合懂色 | 黄色片特级 | 久久国产精彩视频 | 国产美女亚洲精品久久久毛片小说 | 日韩成人高清 | re久久 | 黄色毛片av | 一区高清| 中文字幕中文有码在线 | 国久久久| 夜夜操天天 | 色偷偷亚洲 | 午夜久久乐 | 手机av免费在线观看 | 欧美一级淫片aaaaaaa喷水 | 成人国产一区二区三区精品 | 好吊妞国产欧美日韩免费观看网站 | 国内精品国产三级国产 | 髙清国产性猛交xxxand | 久久人人爽爽爽人久久久 | 狠狠综合久久av一区二区小说 | 91丨porny丨蝌蚪新疆 | 日韩精品a片一区二区三区妖精 | 好吊妞视频788gao在线观看 | 亚洲精品网站在线观看 | a级免费网站 | 久久免费偷拍视频 | 久久国产二区 | 国产精品爽爽久久 | 色欲综合一区二区三区 | 亚洲国产av美女网站 | 欧美三级乱人伦电影 | 无码人妻一区二区三区免费视频 | 国产福利合集 | 色一情一乱一乱一区99av白浆 | 日产精品久久久一区二区福利 | 色婷婷久久综合 | 欧美性受xxxx黒人xyx性爽 | 中文字幕一二三 | 可播放的亚洲男同网站 | 中国极品少妇xxxx | 亚洲国产三级在线观看 | 国产美女激情 | 午夜视频在线观看一区二区 | 黄色在线不卡 | 国产最爽的乱淫视频媛 | 亚洲 中文 欧美 日韩 在线 | 公妇乱淫视频 | 国产成人啪精品视频免费网 | 超碰在线播放97 | 桃色五月| 国产白嫩美女在线观看 | 四虎院影亚洲永久 | 欧洲成人一区二区三区 | 秋霞国产午夜精品免费视频 | av中文国产 | 国产情侣激情在线对白 | 99精产国品一二三产区在线 | 日韩精品专区在线影院重磅 | 亚洲欧美成人中文日韩电影网站 | 天堂国产欧美一区二区三区 | 精品日韩一区 | 亚洲一区二区三区乱码aⅴ 亚洲一区二区三区日本久久九 | 3d动漫精品啪啪一区二区中 | 加勒比综合在线888 夹得我好紧好爽日出了水视频 | 成年人24小时无限看 | 日日夜夜狠狠爱 | 色哺乳xxxxxhd | 紧身裙女教师三上悠亚红杏 | 99精品视频免费观看 | 日韩视频免费大全中文字幕 | 亚洲欧美日本一区二区三区 | 国内揄拍国产精品 | 中文字幕日韩一区 | av第一页 | 亚洲国产精品成人精品无码区在线 | 欧美视频综合 | 天天操国产 | 国产精品久久久不卡 | 综合成人| 天天躁恨躁夜躁2020优势对比 | 在线观看中文字幕2021 | 男女的隐私视频播放 | 黑人蹂躏少妇在线播放 | 国产精品国产三级国产 | 日本不卡视频一区 | 国产69精品久久久久99 | 国产熟睡乱子伦视频 | 久久久一本精品99久久精品66 | 逼逼爱插插网站 | 亚婷婷洲av久久蜜臀小说 | 亚洲精品中文字幕乱码三区 | 精品国产一区二区三区四区五区 | 免费黄色网址在线 | 久久性生活视频 | www.youjizz.com亚洲| 亚洲精选中文字幕 | 久久日本香蕉一区二区三区 | 天天做天天爱天天操 | 亚洲免费二区 | 久草色在线 | tianlula成人精品| 亚洲精品欧美二区三区中文字幕 | 少妇系列av | 亚洲午夜av| 绿色地狱在线观看 | 精品自拍视频在线观看 | 日本少妇丰满做爰图片 | 久久99深爱久久99精品 | 国产福利免费观看 | 深夜男女福利18免费软件 | 15p亚洲 | 中文字幕一区二区三区精彩视频 | 日本伦奷在线播放 | www.中文字幕 | 精品国产毛片 | 国产精品丝袜在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 五月天激情婷婷 | 麻豆乱码国产一区二区三区 | 青草视频免费观看 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 欧美三区四区 | 日韩午夜在线观看 | 精品国产乱码久久久久乱码 | 欧美极品少妇xxxxⅹ免费视频 | 精品国产污污免费网站入口爱酱 | 日日噜噜夜夜狠狠久久无码区 | 成人欧美一区二区三区黑人 | 99在线视频免费观看 | 中文字幕无码av激情不卡 | 欧美色一区二区三区在线观看 | 人人爽人人澡人人高潮 | a猛片免在新观看 | 无限看片在线版免费视频大全 | 日韩操操| 欧美肥胖老妇bbw | 国产精品久久久不卡 | 羞羞的视频网站 | 激情中文网 | swag国产精品一区二区 | 中国大陆一级片 | 日本一级做a爱片野花 | 97久久超碰精品视觉盛宴 | 在线视频网站www色 300部国产真实乱 | 99riav.6国产情侣在线看 | 久久亚洲精 | 亚洲精品国产一区 | 国产极品91 | 日批小视频 | 欧美丰满大乳大屁股毛片图片 | 天天综合天天爱天天做 | 一区二区免费在线观看 | 亚洲天天做 | 亚洲中文字幕无码天然素人在线 | 综合色婷婷 | 少妇综合网 | 天天欧美| 嘴交的视频丨vk口舌视频 | 亚洲国产精品久久久久秋霞1 | 6080久久| 亚洲乱码日产精品bd在线看 | 成人乱人伦精品小说 | 美女高清视频免费视频 | 3d成人精品动漫视频在线观看 | 亚洲呦女专区 | 国产特级毛片aaaaaaa高清 | 欧美熟妇丰满肥白大屁股免费视频 | 亚洲va在线va天堂va偷拍 | 亚洲成人另类 | 99免费在线播放99久久免费 | 国产男女在线观看 | 成人性做爰aaa片免费 | 少妇和黑人老外做爰av | 国产白嫩精品又爽又深呻吟 | 久久久久久99精品 | 成人网免费视频 | 极品丰满少妇 | 色撸撸在线观看 | 久久亚洲色www成人 av免费网站在线观看 | 国产精品99在线观看 | 天天操网 | 爱情岛论坛自拍 | 国产精品最新乱视频二区 | 欧美性折磨bdsm激情另类视频 | 久久久久久免费观看 | 精品午夜一区二区三区在线观看 | 亚洲午夜一区 | 性工作者十日谈 | 亚洲人成在线播放网站 | 久久免费的精品国产v∧ | 中文字幕在线看人 | 久久大胆人体 | 国产v亚洲v天堂无码 | 男人的天堂在线视频 | 吻乳三级视频 | 熟女丰满老熟女熟妇 | 亚洲精品美女久久7777777 | 国产乱码精品一区二区蜜臀 | 日韩人妻无码精品久久 | 999一区二区三区 |