中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

模板引擎

渲染驅動

EasySwoole 引入模板渲染驅動的形式,把需要渲染的數據,通過協程客戶端投遞到自定義的同步進程中進行渲染并返回結果。為何要如此處理,原因在于,市面上的一些模板引擎在 Swoole 協程下存在變量安全問題。例如以下流程:

  • request A reached, static A assign requestA-data
  • compiled template
  • write compiled template (yield current coroutine)
  • request B reached,static A assign requestB-data
  • render static A data into complied template file

以上流程我們可以發現,A 請求的數據,被 B 請求給污染了。為了解決該問題,EasySwoole 引入模板渲染驅動模式。

組件要求

  • easyswoole/spl: ^1.0
  • easyswoole/component: ^2.0

安裝方法

composer require easyswoole/template

倉庫地址

easyswoole/template

基礎實現原理講解

實現渲染引擎

<?php
class R implements \EasySwoole\Template\RenderInterface
{
    public function render(string $template, ?array $data = null, ?array $options = null): ?string
    {
        return 'todo some thing';
    }

    public function onException(\Throwable $throwable, $arg): string
    {
        return $throwable->getMessage();
    }
}

舊版本 Template (1.1.0 之前版本) 實現渲染引擎如下:

<?php
class R implements \EasySwoole\Template\RenderInterface
{
    public function render(string $template, ?array $data = [], ?array $options = []):?string
    {
        return 'todo some thing';
    }

    public function afterRender(?string $result, string $template, array $data = [], array $options = [])
    {
        // TODO: Implement afterRender() method.
    }

    public function onException(Throwable $throwable, $arg):string
    {
        return $throwable->getMessage();
    }
}

在自定義 HTTP 服務中調用渲染引擎

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

class MyRender implements \EasySwoole\Template\RenderInterface
{

    public function render(string $template, ?array $data = null, ?array $options = null): ?string
    {
        return "your template is {$template} and data is " . json_encode($data);
    }

    public function onException(\Throwable $throwable, $arg): string
    {
        return $throwable->getTraceAsString();
    }
}

$renderConfig = \EasySwoole\Template\Render::getInstance()->getConfig();

/*
 * 可選配置
$renderConfig->setTempDir(getcwd()); // 設置 渲染引擎驅動 Socket 存放目錄,默認為 getcwd()
$renderConfig->setTimeout(3); // 設置 超時時間,默認為 3s,不建議修改
$renderConfig->setServerName('EasySwoole'); // 設置 渲染引擎驅動服務名稱,不建議修改
$renderConfig->setWorkerNum(3); // 設置 渲染引擎服務工作進程數,默認為 3,不建議修改
 */

$renderConfig->setRender(new MyRender()); // 設置 渲染引擎

$http = new swoole_http_server("0.0.0.0", 9501);
$http->on("request", function ($request, $response) {
    $ret = \EasySwoole\Template\Render::getInstance()->render('index.html', ['easyswoole' => 'hello']);
    $response->end($ret);
});

// 調用渲染引擎
\EasySwoole\Template\Render::getInstance()->attachServer($http);

$http->start();

舊版本 Template 組件(1.1.0 之前)在自定義 HTTP 服務中調用渲染引擎時,實現渲染引擎接口的方法有些許不同,詳細請看上文實現渲染引擎。

重啟渲染引擎

由于某些模板引擎會緩存模板文件,導致可能出現以下情況:

  • 用戶 A 請求 1.tpl 返回 'a'
  • 開發者修改了 1.tpl 的數據,改成了 'b'
  • 用戶 B、C、D 在之后的請求中,可能會出現 'a'、'b'兩種不同的值

那是因為模板引擎已經緩存了 A 所在進程的文件,導致后面的請求如果也分配到了 A 的進程,就會獲取到緩存的值

解決方案如下:

  • 1: 重啟 EasySwoole 服務,即可解決
  • 2: 模板渲染引擎實現了重啟方法 restartWorker,直接調用即可
Render::getInstance()->restartWorker();

用戶可以根據自己的邏輯,自行調用 restartWorker 方法進行重啟。

重啟渲染引擎使用示例

例如:用戶可以在控制器中新增 reload 方法重啟渲染引擎:

1、實現自定義渲染引擎,新建 App\RenderDriver\MyRender.php 文件

<?php

namespace App\RenderDriver;

class MyRender implements \EasySwoole\Template\RenderInterface
{
    public function render(string $template, ?array $data = null, ?array $options = null): ?string
    {
        return "your template is {$template} and data is " . json_encode($data);
    }

    public function onException(\Throwable $throwable, $arg): string
    {
        return $throwable->getTraceAsString();
    }
}

舊版本 Template 組件(1.1.0 之前)實現自定義渲染引擎接口的方法和最新穩定版本有些許不同,詳細請看上文。

2、注冊渲染引擎服務

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Template\Render;

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

    public static function mainServerCreate(EventRegister $register)
    {
        $renderConfig = \EasySwoole\Template\Render::getInstance()->getConfig();

        /*
         * 可選配置
        $renderConfig->setTempDir(getcwd()); // 設置 渲染引擎驅動 Socket 存放目錄,默認為 getcwd()
        $renderConfig->setTimeout(3); // 設置 超時時間,默認為 3s,不建議修改
        $renderConfig->setServerName('EasySwoole'); // 設置 渲染引擎驅動服務名稱,不建議修改
        $renderConfig->setWorkerNum(3); // 設置 渲染引擎服務工作進程數,默認為 3,不建議修改
         */

        $renderConfig->setRender(new \App\RenderDriver\MyRender());
        Render::getInstance()->attachServer(ServerManager::getInstance()->getSwooleServer());
    }
}

3、在控制器中新增 reload 方法重啟渲染引擎

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\Template\Render;

class Index extends Controller
{
    public function index()
    {
        $this->response()->write(Render::getInstance()->render('index.tpl', [
            'user' => 'easyswoole',
            'time' => time()
        ]));
    }

    public function reload()
    {
        Render::getInstance()->restartWorker();
        $this->response()->write('restart worker success!');
    }
}

運行結果:訪問 http://127.0.0.1:9501/ (示例請求地址) 即可看到運行結果: your template is index.tpl and data is {"user":"easyswoole","time":1613659221},然后訪問 http://127.0.0.1:9501/reload (示例請求地址) 即可重啟渲染引擎,看到運行結果 restart worker success!

使用示例(在 EasySwoole 中使用)

使用 Smarty 渲染

引入Smarty

composer require smarty/smarty

實現渲染引擎

新建 \App\RenderDriver\Smarty.php,內容如下:

<?php

namespace App\RenderDriver;

use EasySwoole\Template\RenderInterface;

class Smarty implements RenderInterface
{
    private $smarty;

    function __construct()
    {
        $temp = sys_get_temp_dir();
        $this->smarty = new \Smarty();
        $this->smarty->setTemplateDir(EASYSWOOLE_ROOT . '/App/View/');
        $this->smarty->setCacheDir("{$temp}/smarty/cache/");
        $this->smarty->setCompileDir("{$temp}/smarty/compile/");
    }

    public function render(string $template, ?array $data = null, ?array $options = null): ?string
    {
        foreach ($data as $key => $item) {
            $this->smarty->assign($key, $item);
        }
        return $this->smarty->fetch($template, $cache_id = null, $compile_id = null, $parent = null, $display = false,
            $merge_tpl_vars = true, $no_output_filter = false);
    }

    public function onException(\Throwable $throwable, $arg): string
    {
        $msg = "{$throwable->getMessage()} at file:{$throwable->getFile()} line:{$throwable->getLine()}";
        trigger_error($msg);
        return $msg;
    }
}

舊版本 Template 組件(1.1.0 之前)實現渲染引擎接口的方法和最新穩定版本有些許不同,詳細請看上文。Template 1.1.0 之前版本實現如下:

<?php
namespace App\RenderDriver;

use EasySwoole\Template\RenderInterface;

class Smarty implements RenderInterface
{
    private $smarty;

    function __construct()
    {
        $temp = sys_get_temp_dir();
        $this->smarty = new \Smarty();
        $this->smarty->setTemplateDir(EASYSWOOLE_ROOT . '/App/View/');
        $this->smarty->setCacheDir("{$temp}/smarty/cache/");
        $this->smarty->setCompileDir("{$temp}/smarty/compile/");
    }

    public function render(string $template, ?array $data = [], ?array $options = []): ?string
    {
        foreach ($data as $key => $item) {
            $this->smarty->assign($key, $item);
        }
        return $this->smarty->fetch($template, $cache_id = null, $compile_id = null, $parent = null, $display = false,
            $merge_tpl_vars = true, $no_output_filter = false);
    }

    public function afterRender(?string $result, string $template, array $data = [], array $options = [])
    {

    }

    public function onException(\Throwable $throwable, $arg): string
    {
        $msg = "{$throwable->getMessage()} at file:{$throwable->getFile()} line:{$throwable->getLine()}";
        trigger_error($msg);
        return $msg;
    }
}

在 EasySwoole 的 HTTP 服務中調用

首先在 EasySwoole 全局事件 EasySwooleEvent.phpmainServerCreate 事件中注冊渲染引擎服務,注冊示例代碼如下:

<?php

namespace EasySwoole\EasySwoole;

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)
    {
        // 獲取 Render 配置
        $renderConfig = \EasySwoole\Template\Render::getInstance()->getConfig();

        // [可選配置]
        /*
        $renderConfig->setTimeout(3); // 設置 超時時間,默認為 3s,不建議修改
        $renderConfig->setServerName('EasySwoole'); // 設置 渲染引擎驅動服務名稱,不建議修改
        $renderConfig->setWorkerNum(3); // 設置 渲染引擎服務工作進程數,默認為 3,不建議修改
         */

        // 設置 渲染引擎模板驅動
        $renderConfig->setRender(new \App\RenderDriver\Smarty());

        // 設置 渲染引擎進程 Socket 存放目錄,默認為 getcwd()
        $renderConfig->setTempDir(EASYSWOOLE_TEMP_DIR);

        // 注冊進程到 EasySwoole 主服務
        \EasySwoole\Template\Render::getInstance()->attachServer(\EasySwoole\EasySwoole\ServerManager::getInstance()->getSwooleServer());
    }
}

在控制器層響應(使用示例代碼如下):

首先新建 App\View\custom.html,內容如下:

{$name}

在控制器中進行調用:

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;

class Index extends Controller
{
    public function index()
    {
        $this->response()->write(\EasySwoole\Template\Render::getInstance()->render('custom.html', ['name' => 'Welcome To Use EasySwoole ^_^!']));
    }
}

運行結果:啟動服務,訪問 http://127.0.0.1:9501,即可看到運行結果:Welcome To Use EasySwoole ^_^!

支持常用的模板引擎

下面列舉一些常用的模板引擎包方便引入使用:

smarty/smarty

Smarty 是一個使用 PHP 寫出來的模板引擎,是目前業界最著名的 PHP 模板引擎之一。

引入方法

composer require smarty/smarty=~3.1

league/plates

使用原生 PHP 語法的非編譯型模板引擎,更低的學習成本和更高的自由度。

引入方法

composer require league/plates=3.*

duncan3dc/blade

Laravel 框架使用的模板引擎

引入方法

composer require duncan3dc/blade=^4.5

topthink/think-template

ThinkPHP 框架使用的模板引擎

引入方法

composer require topthink/think-template

如果用戶想要在 EasySwoole 框架中使用以上模板引擎,具體使用示例可以查看Template 使用示例 或者 Template 組件單元測試用例。上文中講述了使用 Smarty 模板引擎的使用示例,其他模板引擎的使用方法大致類似。

常見問題

注冊渲染引擎失敗,出現 UnixSocket bind 失敗

  • 報錯結果類似如下:
PHP Fatal error:  Uncaught EasySwoole\Component\Process\Exception: EasySwoole\Template\RenderWorker bind /work/EasySwoole.Render.Worker.0.sock fail case Operation not permitted in /work/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php:32
  • 失敗原因:部分 vargrant 服務器或 Docker 服務器沒有權限創建 UnixSocket,導致注冊渲染引擎失敗。
  • 解決方案:注冊渲染引擎時,設置渲染引擎驅動進程 Socket 存放目錄為 '/Tmp'。示例代碼如下:
<?php

namespace EasySwoole\EasySwoole;

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)
    {
        // 獲取 Render 配置
        $renderConfig = \EasySwoole\Template\Render::getInstance()->getConfig();
        // 設置 渲染引擎模板驅動
        $renderConfig->setRender(new \App\RenderDriver\Smarty());

        ###  設置 渲染引擎進程 Socket 存放目錄為 '/Tmp'  ###
        $renderConfig->setTempDir('/Tmp');

        // 注冊進程到 EasySwoole 主服務
        \EasySwoole\Template\Render::getInstance()->attachServer(\EasySwoole\EasySwoole\ServerManager::getInstance()->getSwooleServer());
    }
}
主站蜘蛛池模板: 国产精品色婷婷亚洲综合看 | 久在线| 黄色一级大片在线免费看产 | 蜜臀精品 | 秋霞电影院午夜伦 | 成人在线免费视频 | 国产日产久久高清欧美一区 | 欧美精品一区二区三区在线播放 | 狠狠操狠狠干 | 欧美一区二区精品 | 精品在线 | 国产精品久久久久久久久久久小说 | 亚洲国产精品网站 | 久久综合久久综合久久 | 欧美在线观看一区 | av免费在线观看网站 | 久久久久久亚洲精品视频 | 天天澡天天狠天天天做 | 欧美日韩久久精品 | 蜜桃tv一区二区三区 | 欧美日韩一级视频 | 日韩欧美三级在线观看 | 淫片一级国产 | 午夜影院免费观看视频 | 最近免费中文字幕在线视频2 | 大胆一区 | 精精国产xxxx视频在线观看 | 色吧网站| 自拍偷拍中文字幕 | 天天射天天干 | 欧美一级二级三级 | 成人自拍视频 | 亚洲一区二区三区免费 | 欧美一级二级视频 | 中文字幕乱码一区二区三区 | 一区二区av | 成人在线小视频 | 中文字幕高清 | 欧美国产伦久久久久久 | 欧美freesex | 91精品国产高清久久久久久久久 | 一级黄色a| 久久e久久| 久草av在线播放 | 国产精品一区二区av | 日韩精品观看 | 亚洲午夜视频在线 | 国产黄网 | 综合精品久久久 | 日韩一区电影 | 精品国产免费人成在线观看 | 台湾黄色网 | 成人永久免费视频 | 亚洲人成在线播放 | 黄色a级网站 | 国产日韩欧美在线观看 | 亚洲欧洲免费视频 | 欧美中文在线 | 久久国产精品久久久久久电车 | 日韩色av | 亚洲精品二区 | 一区二区不卡视频 | 亚洲毛片 | 一本a道v久大 | 国产成人精品a视频一区www | 中文字幕一区二区三 | 精品一二三区 | 亚洲美女一区 | 中文成人在线 | 日韩www | 艹逼短视频 | 亚洲一区中文字幕在线观看 | 亚洲视频日韩 | 亚洲国产精品网站 | 亚洲狠狠丁香婷婷综合久久久 | 91国产精品 | 国产91在线观看 | 国产精品亚洲成在人线 | 国产高潮呻吟av | 精品小视频 | 国产日产久久高清欧美一区 | 国产成人久久精品一区二区三区 | 色偷偷888欧美精品久久久 | 久久只有精品 | 成人欧美一区二区 | 国产98色在线 | 日韩 | 亚洲精品久久久久久国 | 在线观看av大片 | 亚洲精品v | 久久久久久一区二区三区 | 国产一级片 | 成人精品一区二区三区 | 亚洲精品成人 | 日本免费中文字幕 | 久久久精品国产99久久精品芒果 | 日韩免费一区 | 精品一区二区久久久久久久网站 | 国产精品亚洲精品 | 亚洲精品久久久久久久久久久久久 | 欧美特级 | 一本色道久久综合狠狠躁的推荐 | 国产精品剧情一区二区三区 | av毛片 | 伊人一区二区三区 | 日韩中文字幕在线观看 | 四虎久久 | 久久99国产精一区二区三区 | 欧美在线视频网站 | 亚洲精品7777xxxx青睐 | 午夜视频免费在线观看 | 欧美精品区| 黄a一级| 欧美日韩国产一区二区三区 | 成人免费黄色大片 | 国产精品久久久久久久午夜片 | 欧美精品99 | 黄色精品网站 | 亚洲久草 | 亚洲青青草 | 成人免费视频网址 | 黄色在线观看视频 | 天堂一区| 黄色视屏免费在线观看 | 国产精品成人一区二区 | 亚洲国产高清在线 | 黄色网毛片 | 999精品视频 | 欧美精品一二三区 | 桃色五月 | 国产精品一区二区视频 | 国产精品久久久久久久久久久久久 | 日韩电影在线免费观看 | 久草久草久 | 中文字幕综合在线 | 精品国产不卡一区二区三区 | 亚洲成人av | 国产视频一区二区 | 日韩欧美一区二区三 | 毛片久久久 | 欧美日韩国产在线 | 国产一区二区三区在线观看视频 | 久久国产精品一区二区三区 | 免费国产一区 | 成人高清视频在线观看 | 一区二区蜜桃 | 成人aaa毛片 | 午夜在线观看视频网站 | 色偷偷888欧美精品久久久 | 欧美亚洲国产日韩 | 激情自拍偷拍 | 一区二区三区免费看 | 国产精品日日 | 日韩av成人 | 久草新免费 | 精品久久久久久久久久久 | 欧美在线观看视频一区二区 | 精品在线播放 | 久久久精品国产 | 五月婷婷激情网 | 国产精品视频免费观看 | 久久草视频 | 国产精品爱久久久久久久 | 久久国产精品免费一区二区三区 | 自拍视频网站 | 国产精品久久久久久久久久久新郎 | 欧美日韩成人在线观看 | 老司机av导航 | 国产一区二区三区在线免费 | 17c一起操 | 久久精品国产一区二区电影 | 亚洲人成网站999久久久综合 | 国产精品国产精品国产专区不片 | 99黄色片 | 中文字幕综合在线 | 亚洲国产一区二区在线观看 | 亚洲精品乱码 | 在线视频a | 精品国产一区二区三区性色av | 精品视频在线播放 | 日日夜夜精品视频 | 九九九久久国产免费 | 成年人在线看 | 激情欧美日韩一区二区 | 亚洲一区二区 | 黄色在线免费观看视频网站 | 97高清国语自产拍 | 中文字幕免费观看 | 午夜剧场免费在线观看 | 免费在线观看黄色av | 一级黄色片在线 | 亚洲性网| 久久天天 | 欧美日本国产 | 亚洲综合色自拍一区 | 日韩精品一区二区三区在线播放 | 免费看黄在线 | 中文字幕在线三区 | 亚洲国产免费 | 性色av一区二区三区 | 99视频在线免费观看 | 久久国产精品视频 | 欧美一区亚洲一区 | 日韩中文字幕一区 | 久久99精品视频 | 亚洲中字幕 | 精品国产乱码久久久久久牛牛 | 色综合天天综合网国产成人网 | 毛片一级网站 | 国产精品美女久久久久久久久久久 | 国产成人精品一区二区三区四区 | 精品视频网 | 欧美一区二区三区免费 | 一区二区三区久久 | 国产精品毛片久久久久久 | 懂色av中文字幕一区二区三区 | 国产精品久久久久久久久久久免费看 | 精品国产一区二区三区在线观看 | 日韩视频免费 | 91久久久久久久久久久久久久久久 | 亚洲男人网 | 国产亚洲精品美女久久久久久久久久 | 中文字幕亚洲专区 | 国产精品国产三级国产aⅴ原创 | 不卡一区 | 久久99精品久久久久 | av影音资源 | 亚洲乱码国产乱码精品精98午夜 | 国产成年人视频 | 亚洲国产精品视频一区 | 久久免费精品 | 欧美激情久久久 | 日本三级精品视频 | 九九久久久 | 九九九色| 亚洲欧洲自拍 | 成人1区2区 | 国产在线一区二区 | 视频在线一区二区 | 日韩一区二区三区在线 | 成人毛片久久 | 亚洲黄色片免费观看 | 亚洲八区| 色天堂视频 | 色的视频网站 | 久久精品国产精品青草 | 一区二区三区免费播放 | 羞羞小视频 | 欧美freesex| 91资源在线视频 | 含羞草www国产在线视频 | аⅴ资源新版在线天堂 | 在线免费黄色 | 中文字幕大全 | 精品一区二区久久久久黄大片 | 成人深夜福利 | 日韩免费片| 日本黄色片免费看 | 在线播放一级片 | 免费一级在线 | 亚洲成人av一区二区三区 | 福利视频三区 | 美女黄18| 成人午夜精品久久久久久久网站 | 日韩在线小视频 | 国产中文字幕一区 | 综合九九 | 国产日韩精品久久 | 一区二区观看 | 日韩精品视频在线播放 | 久久狠狠| 色婷婷网 | 成人精品鲁一区一区二区 | 成人福利 | 欧美一级片在线 | 在线视频一区二区三区 | 亚洲电影一区二区 | 精品亚洲国产成av人片传媒 | 亚洲视频在线看 | 久久久成人精品 | 国产精品成人久久久久 | 国产精品伦理 | 99精品欧美一区二区三区综合在线 | 精品国产一级 | 噜噜噜噜噜在线视频 | 国产人成精品一区二区三 | 久久久久久成人 | 午夜a级理论片915影院 | 一区二区精品视频 | av日韩在线播放 | 久久草在线视频 | 亚洲日韩欧美一区二区在线 | 日本不卡一区二区三区在线观看 | 国产成人精品免高潮在线观看 | av一区二区三区四区 | 国产精品久久久久久久久免费桃花 | 日韩成人影院 | 久久久亚洲综合 | 日韩欧美一区二区三区免费观看 | 97久久香蕉国产线看观看 | 国产综合精品一区二区三区 | 青青草亚洲| 欧美久久久久久 | 中文字幕一区日韩精品欧美 | 欧美一级视频 | 五月激情天 | 天天操天天干视频 | 天天操天天拍 | 精品伊人久久 | 夜久久| 国产精品久久久久久中文字 | 一级色视频 | 久久久久国产精品一区二区 | 国产高清在线精品一区二区三区 | 欧美精品成人一区二区三区四区 | 91免费观看视频 | 性做久久久 | 欧美黑人xx| 色天天综合久久久久综合片 | av毛片 | 精品欧美一区二区三区久久久 | 国产精品18久久久久久久久 | 日韩午夜在线视频 | 日韩av一级片 | 免费av在线网站 | 欧美精品成人 | 久在线 | 99这里只有精品视频 | 日本一区二区三区免费观看 | 黄色毛片三级 | 自拍偷拍在线视频 | 欧美成人激情视频 | 久久精品日产第一区二区三区 | 亚洲精品久久久久久久久久久久久 | 欧美精品v国产精品v日韩精品 | 在线观看免费毛片视频 | 蜜臀久久精品99国产精品日本 | 台湾av片| 国产97人人超碰caoprom | 欧美在线视频一区 | 无码日韩精品一区二区免费 | 亚洲美女精品视频 | 色在线免费观看 | 国产精品久久久久久婷婷天堂 | 精品视频成人 | 夜夜夜久久久 | 蜜桃av一区二区三区 | 国产精品初高中精品久久 | 欧美精品日韩 | 激情网在线观看 | 精品国产一区二区三区久久久蜜 | 日韩电影在线 | 国产日韩欧美高清 | 91.成人天堂一区 | 久草视频网 | zzz444成人天堂7777 | 亚洲国产精品99久久久久久久久 | 午夜成人免费电影 | 欧美久久综合 | 成人1区2区 | 免看一级一片 | 日韩成人一级 | 精品欧美乱码久久久久久 | 欧美一区在线视频 | 亚洲天堂一区 | 日韩成人在线观看 | 亚洲日本va中文字幕 | 在线播放国产一区二区三区 | 亚洲人成在线播放 | 欧美成年黄网站色视频 | 国产人免费人成免费视频 | 91精品国产综合久久久久 | 黄色成人av | 亚洲精品视频在线看 | 日韩视频久久 | 午夜视频网站 | 亚洲性网 | 久久久成人免费一区二区 | 亚洲高清黄色 | 亚洲成人网一区 | 1000部精品久久久久久久久 | 欧美日韩在线电影 | 欧美成人免费电影 | 亚洲欧洲精品视频在线观看 | 亚洲国产成人av | 男人的天堂久久精品 | 精品国产一区二区三区四区 | 国产精品美女久久久久久久久久久 | 精品久久一区二区三区 | 中文字幕在线观看一区二区三区 | 九色porny丨国产精品 | 婷婷毛片| 激情网婷婷 | 亚洲免费在线 | 欧美freesex交免费视频 | 九色porny丨国产精品 | 欧美日韩一区二区视频在线观看 | 天天夜夜操 | 亚洲欧美日韩在线 | 国产精品中文字幕在线 | 欧美极品一区二区 | 一区不卡 | 中文字幕在线资源 | 韩日在线观看视频 | 色站综合| 国产精品二区一区二区aⅴ污介绍 | 成人av观看 | 国产精品久久久亚洲 | 视频一区二区三区中文字幕 | 国产精品99久久 | 在线一区二区三区四区 | 欧美精品在线一区二区三区 | 视频四区| 性农村人freesex | 精品成人av一区二区三区 | av黄色网 | 午夜伦理影院 | 久久草在线视频 | 男女激情网站 | 欧美在线观看免费观看视频 | 亚洲一区二区中文字幕 | 91久久久久久久久 | 九九亚洲精品 | 云南一级毛片 | 久久99精品久久久久婷婷暖91 | 国产大学生援交视频在线观看 | 中文字幕一二三区 | 亚洲欧美一区二区三区情侣bbw | 久久久久久国产精品mv | 国产高清视频一区 | 超碰在线国产 | 中文av一区 | 欧产日产国产一区 | 黄色成人av| 欧美.com | 国产视频一区在线 | 欧美大片一区二区 | av色伊人久久综合一区二区 | 成人在线一区二区 | 日韩精品久久久久久 | 亚洲精品字幕 | 亚洲激情视频在线播放 | 在线观看日韩精品 | 国产精品久久久久久久久久久久冷 | 日本精品视频在线观看 | 免费观看一级特黄欧美大片 | 超碰伊人网 | 日韩三级电影免费观看 | 黑人巨大精品欧美一区免费视频 | 色com| 成人免费黄色毛片 | 亚洲视频在线免费观看 | 久久精品国产亚洲一区二区三区 | 99精品视频在线 | 日韩精品一区在线 | 日本免费在线视频 | 国产一区二区在线免费观看 | 国产在线精品一区 | 欧美九九| 日韩在线播放一区 | 欧美综合在线观看 | 人人射 | 欧美日韩一区二区三区在线观看 | 黄色av免费网站 | 少妇精品久久久久久久久久 | 亚洲乱码国产乱码精品精的特点 | 亚洲高清毛片一区二区 | 中文字幕在线免费视频 | 中国a毛片 | 国产成人av综合 | 香蕉av在线 | 欧美一区二区三区精品 | 日韩免费一区 | 日韩1区 | 欧美精品成人 | 成人国内精品久久久久一区 | 凹凸日日摸日日碰夜夜爽孕妇 | 免费观看一级视频 | 成人免费av | 国产亚洲激情 | 精品亚洲国产成av人片传媒 | av不卡电影在线观看 | 国产日韩精品一区二区 | www久久久久| 精品久久一区二区三区 | 免费一区二区三区 | 九九色综合 | 无码一区二区三区视频 | 亚洲精品日本 | 日本黄a三级三级三级 | 在线观看免费毛片视频 | 91在线看 | 亚洲欧美日韩系列 | 久久久久九九九九九 | 成人av免费观看 | 亚洲国产精品一区二区第一页 | 不卡一区二区三区视频 | 欧美视频中文字幕 | 超碰91在线 | 在线亚洲精品 | 欧美日韩免费在线 | 免费看国产片在线观看 | 夜夜超碰 | 欧美a一级 | 91精品国产色综合久久 | 国产亚洲精品美女久久久久久久久久 | 欧美一区二区激情视频 | 久久免费精品视频 | 欧美日本一区二区三区 | 日韩视频在线播放 | 99精品视频在线观看 | 日韩av专区| 少妇色欲网 | 久久五月视频 | 国产精品2 | 国产91在线播放 | 亚洲精品一区二区三区四区高清 | 91精品久久久久久久久 | 毛片视频免费 | 亚洲综合av一区 | 欧美激情专区 | 久久国产精品一区二区三区 | 国产成人av在线 | 国产精品毛片a√一区 | 国产精品久久久久久亚洲调教 | 久热精品免费 | 国产精品高清一区二区 | 最新精品国产 | 天天爽天天操 | 黄毛片网站 | 黄色小视频在线免费观看 | 国产综合一区二区 | 久久九九这里只有精品 | 久久国产精品99久久久久久老狼 | 国产在线精品一区 | 欧美一区永久视频免费观看 | 国产又色又爽又黄 | 亚洲综合av一区 | 欧美日韩精品免费观看 | а√天堂中文在线资源8 | 日韩欧美精品一区二区三区 | 亚洲综合大片69999 | 99精品国产高清在线观看 | 欧美精品在线一区二区三区 | 成人免费视频网站在线观看 | 精精国产xxxx在线视频www | 91视频免费在线 | 在线看国产 | 中文精品在线 | 中文字幕第18页 | 成人不卡视频 | 国产精品视频久久久 | 久久精品免费观看 | 日韩国产在线 | 精产国产伦理一二三区 | 欧美一级片毛片免费观看视频 | 97av在线 | 欧洲亚洲一区 | 国产激情91久久精品导航 | 九九热精品在线 | 在线观看免费黄色 | 一区二区三区在线播放 | 欧美电影免费网站 | 黄色一级小视频 | 日本少妇bbbb爽爽bbb美 | 色噜噜狠狠狠综合曰曰曰 | 在线视频一区二区 | 黄在线观看 | 国产视频aaa| 国产小视频在线播放 | 亚洲第一视频 | 欧美成人免费电影 | 午夜黄色 | 草久久久 | 天天操天天干天天 | 国产精品成av人在线视午夜片 | 黄色一区二区三区 | 亚洲国产视频一区 | 日韩av电影在线免费观看 | 国产免费黄色 | av一级久久 | 欧美日韩国产一区二区三区 | 91欧美激情一区二区三区成人 | 99热精品视| 久久久国产一区二区三区四区小说 | 97精品一区二区三区 | 成人区精品一区二区毛片不卡 | 在线观看免费成人av | 欧美激情精品久久久久久变态 | 欧美在线观看免费观看视频 | 狠狠的日 | 久久午夜电影 | 在线一区二区三区做爰视频网站 | 久久久久久亚洲精品 | 国产成人精品久久二区二区 | 中文字幕国产一区 | 久久爱电影 | 中文字幕国产 | 激情久久婷婷 | 欧美中文字幕一区二区三区亚洲 | 成年人综合网 | 天天精品视频免费观看 | 久久久久国产精品 | 毛片在线免费观看网站 | 成人精品 | 欧美在线a | 老熟妇午夜毛片一区二区三区 | 欧美一区二区三区四区五区 | 欧美日韩国产在线 | 国产www视频| 狠狠综合久久av一区二区老牛 | 色综合久久88色综合天天 | 欧美一区二区三区在线视频 | 91色视频在线观看 | 亚洲h视频 | 欧美日韩中文字幕 |