久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

ThinkPHP5 框架引入 Go AOP,PHP AOP編程項目詳解

瀏覽:155日期:2022-09-10 13:30:28

本文實例講述了ThinkPHP5 框架引入 Go AOP,PHP AOP編程。分享給大家供大家參考,具體如下:

項目背景

目前開發的WEB軟件里有這一個功能,PHP訪問API操作數據倉庫,剛開始數據倉庫小,沒發現問題,隨著數據越來越多,調用API時常超時(60s)。于是決定采用異步請求,改為60s能返回數據則返回,不能則返回一個異步ID,然后輪詢是否完成統計任務。由于項目緊,人手不足,必須以最小的代價解決當前問題。

方案選擇 重新分析需求,并改進代碼 采用AOP方式改動程序

從新做需求分析,以及詳細設計,并改動代碼,需要產品,架構,前端,后端的支持。會驚動的人過多,在資源緊張的情況下是不推薦的。采用AOP方式,不改動原有代碼邏輯,只需要后端就能完成大部分任務了。后端用AOP切入請求API的方法,通過監聽API返回的結果來控制是否讓其繼續運行原有的邏輯(API在60s返回了數據),或者是進入離線任務功能(API報告統計任務不能在60s內完成)。

之前用過AOP-PHP拓展,上手很簡單,不過后來在某一個大項目中引入該拓展后,直接爆了out of memory,然后就研究其源碼發現,它改變了語法樹,并Hook了每個被調用的方法,也就是每個方法被調用是都會去詢問AOP-PHP,這個方法有沒有切面方法。所以效率損失是比較大的。而且這個項目距離現在已經有8年沒更新了。所以不推薦該解決方案。

實際環境

Debian,php-fpm-7.0,ThinkPHP-5.10。

引入AOP

作為一門zui好的語言,PHP是不自帶AOP的。那就得安裝AOP-PHP拓展,當我打開pecl要下載時,傻眼了,全是bate版,沒有顯示說明支持php7。但我還是抱著僥幸心理,找到了git,發現4-5年沒更新了,要不要等一波更新,哦,作者在issue里說了有時間就開始兼容php7。好吧,狠話不多說,下一個方案:Go!AOP.看了下git,作者是個穿白體恤,喜歡山峰的大帥哥,基本每個issue都會很熱心回復。

composer require goaop/framework

ThinkPHP5 對composer兼容挺不錯的哦,(到后面,我真想揍ThinkPHP5作者)這就裝好了,怎么用啊,git上的提示了簡單用法。我也就照著寫了個去切入controller。

<?PHPnamespace apptestscontroller;use thinkController;class Test1 extends Controller{ public function test1() { echo $this->aspectAction(); } public function aspectAction() { return ’hello’; }}

定義aspect

<?PHPnamespace apptestsaspect;use GoAopAspect;use GoAopInterceptFieldAccess;use GoAopInterceptMethodInvocation;use GoLangAnnotationAfter;use GoLangAnnotationBefore;use GoLangAnnotationAround;use GoLangAnnotationPointcut;use apptestscontrollerTest1;class MonitorAspect implements Aspect{ /** * Method that will be called before real method * * @param MethodInvocation $invocation Invocation * @Before('execution(public|protected apptestscontrollerTest1->aspectAction(*))') */ public function beforeMethodExecution(MethodInvocation $invocation) { $obj = $invocation->getThis(); echo ’Calling Before Interceptor for method: ’, is_object($obj) ? get_class($obj) : $obj, $invocation->getMethod()->isStatic() ? ’::’ : ’->’, $invocation->getMethod()->getName(), ’()’, ’ with arguments: ’, json_encode($invocation->getArguments()), '<br>n'; }}

啟用aspect

<?PHP// file: ./application/tests/service/ApplicationAspectKernel.phpnamespace apptestsservice;use GoCoreAspectKernel;use GoCoreAspectContainer;use apptestsaspectMonitorAspect;/** * Application Aspect Kernel * * Class ApplicationAspectKernel * @package apptestsservice */class ApplicationAspectKernel extends AspectKernel{ /** * Configure an AspectContainer with advisors, aspects and pointcuts * * @param AspectContainer $container * * @return void */ protected function configureAop(AspectContainer $container) { $container->registerAspect(new MonitorAspect()); }}

go-aop 核心服務配置

<?PHP// file: ./application/tests/behavior/Bootstrap.phpnamespace apptestsbehavior;use thinkException;use ComposerAutoloadClassLoader;use GoInstrumentTransformerFilterInjectorTransformer;use GoInstrumentClassLoadingAopComposerLoader;use DoctrineCommonAnnotationsAnnotationRegistry;use apptestsserviceApplicationAspectKernel;use apptestsThinkPhpLoaderWrapper;class Bootstrap{ public function moduleInit(&$params) { $applicationAspectKernel = ApplicationAspectKernel::getInstance(); $applicationAspectKernel->init([ ’debug’ => true, ’appDir’ => __DIR__ . ’./../../../’, ’cacheDir’ => __DIR__ . ’./../../../runtime/aop_cache’, ’includePaths’ => [ __DIR__ . ’./../../tests/controller’, __DIR__ . ’./../../../thinkphp/library/think/model’ ], ’excludePaths’ => [ __DIR__ . ’./../../aspect’, ] ]); return $params; }}

配置模塊init鉤子,讓其啟動 go-aop

<?PHP// file: ./application/tests/tags.php// 由于是thinkphp5.10 沒有容器,所有需要在module下的tags.php文件里配置調用他return [ // 應用初始化 ’app_init’ => [], // 應用開始 ’app_begin’ => [], // 模塊初始化 ’module_init’ => [ ’apptestsbehaviorBootstrap’ ], // 操作開始執行 ’action_begin’ => [], // 視圖內容過濾 ’view_filter’ => [], // 日志寫入 ’log_write’ => [], // 應用結束 ’app_end’ => [],];兼容測試

好了,訪問 http://127.0.0.1/tests/test1/test1 顯示:

hello

這不是預期的效果,在aspect定義了,訪問該方法前,會輸出方法的更多信息信息。像如下內容才是預期

Calling Before Interceptor for method: apptestscontrollerTest1->aspectAction() with arguments: []

上他官方Doc看看,是一些更高級的用法。沒有講go-aop的運行機制。上git上也沒看到類似issue,額,發現作者經常在issue里回復:試一試demo。也許我該試試demo。

Run Demos

我采用的是LNMP技術棧。

假設這里有臺Ubuntu你已經配置好了LNMP環境 下載代碼 配置nginx

# file: /usr/share/etc/nginx/conf.d/go-aop-test.confserver { listen 8008;# listen 443 ssl; server_name 0.0.0.0; root '/usr/share/nginx/html/app/vendor/lisachenko/go-aop-php/demos'; index index.html index.htm index.php; charset utf-8; access_log /var/log/nginx/go-aop-access.log; error_log /var/log/nginx/go-aop-error.log notice; sendfile off; client_max_body_size 100m; location ~ .php(.*)$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param PATH_INFO $fastcgi_path_info;# fastcgi_param SCRIPT_FILENAME /var/www/html/app/vendor/lisachenko/go-aop-php/demos$fastcgi_script_name; #docker的配置 fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/api/vendor/lisachenko/go-aop-php/demos$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_split_path_info ((?U).+.php)(/?.+)$; }}

接下來要調整下代碼

訪問 http://127.0.0.1:8008 試試,(估計大家都遇到了這個)

ThinkPHP5 框架引入 Go AOP,PHP AOP編程項目詳解

這個報錯信息提示找不到這個類。來到報錯的文件里。這文件使用了use找不到類,就是autoload出問題了,看到 vendor/lisachenko/go-aop-php/demos/autoload.php 這個文件。

<?PHP···if (file_exists(__DIR__ . ’/../vendor/autoload.php’)) { /** @var ComposerAutoloadClassLoader $loader */ $loader = include __DIR__ . ’/../vendor/autoload.php’; $loader->add(’Demo’, __DIR__);}

可以看到這個代碼第一行沒找到vendor下的autoload。我們做如下調整

<?PHP$re = __DIR__ . ’/../../../vendor/autoload.php’;if (file_exists(__DIR__ . ’/../../../autoload.php’)) { /** @var ComposerAutoloadClassLoader $loader */ $loader = include __DIR__ . ’/../../../autoload.php’; $loader->add(’Demo’, __DIR__);}

再試試,demo運行起來了。

ThinkPHP5 框架引入 Go AOP,PHP AOP編程項目詳解

嘗試了下,運行成功

ThinkPHP5 框架引入 Go AOP,PHP AOP編程項目詳解

通過以上的輸出,可以得出demo里是對方法運行前成功捕獲。為什么在thinkphp的controller里運行就不成功呢。我決定采用斷點進行調試。

通過斷點我發現了這個文件

<?PHP// file: ./vendor/lisachenko/go-aop-php/src/Instrument/ClassLoading/AopComposerLoader.phppublic function loadClass($class){ if ($file = $this->original->findFile($class)) { $isInternal = false; foreach ($this->internalNamespaces as $ns) { if (strpos($class, $ns) === 0) { $isInternal = true; break; } } include ($isInternal ? $file : FilterInjectorTransformer::rewrite($file)); }}

這是一個autoload,每個類的載入都會經過它,并且會對其判斷是否為內部類,不是的都會進入后續的操作。通過斷點進入 FilterInjectorTransformer,發現會對load的文件進行語法解析,并根據注冊的annotation對相關的類生成proxy類。說道這,大家就明白了go-aop是如何做到切入你的程序了吧,生成的proxy類,可以在你配置的cache-dir(我配置的是./runtime/aop_cache/)里看到。

同時./runtime/aop_cache/ 文件夾下也生成了很多東西,通過查看aop_cache文件內產生了與Test1文件名相同的文件,打開文件,發現它代理了原有的Test1控制器。這一系列信息,可以得出,Go!AOP 通過'劫持' composer autoload 讓每個類都進過它,根據aspect的定義來決定是否為其創建一個代理類,并植入advice。額,ThinkPHP5是把composer autoload里的東西copy出來,放到自己autoload里,然后就沒composer啥事了。然后go-aop一直等不到composer autoload下發的命令,自然就不能起作用了,so,下一步

改進ThinkPHP5

在ThinkPHP5里,默認有且只會注冊一個TP5內部的 Loader,并不會把include請求下發給composer的autoload。所以,為其讓go-aop起作用,那么必須讓讓include class的請求經過 AopComposerLoad.我們看看這個文件

<?PHP// ./vendor/lisachenko/go-aop-php/src/Instrument/ClassLoading/AopComposerLoader.php:57public static function init(){ $loaders = spl_autoload_functions(); foreach ($loaders as &$loader) { $loaderToUnregister = $loader; if (is_array($loader) && ($loader[0] instanceof ClassLoader)) { $originalLoader = $loader[0]; // Configure library loader for doctrine annotation loader AnnotationRegistry::registerLoader(function ($class) use ($originalLoader) { $originalLoader->loadClass($class); return class_exists($class, false); }); $loader[0] = new AopComposerLoader($loader[0]); } spl_autoload_unregister($loaderToUnregister); } unset($loader); foreach ($loaders as $loader) { spl_autoload_register($loader); }}

這個文件里有個類型檢測,檢測autoload callback是否為Classloader類型,然而ThinkPHP5不是,通過斷點你會發現ThinkPHP5是一個字符串數組,so,這里也就無法把go-aop注冊到class loader的callback當中了。

這里就要提一下PHP autoload機制了,這是現代PHP非常重要的一個功能,它讓我們在用到一個類時,通過名字能自動加載文件。我們通過定義一定的類名規則與文件結構目錄,再加上能實現以上規則的函數就能實現自動加載了。在通過 spl_autoload_register 函數的第三個參數 prepend 設置為true,就能讓其排在在TP5的loader前面,先一步被調用。

依照如上原理,就可以做如下改進這個是為go-aop包裝的新autoload,本質上是在原來的ThinkPHP5的loader上加了一個殼而已。

<?PHP// file: ./application/tests namespace apptests;require_once __DIR__ . ’./../../vendor/composer/ClassLoader.php’;use thinkLoader;use ComposerAutoloadClassLoader;use GoInstrumentTransformerFilterInjectorTransformer;use GoInstrumentClassLoadingAopComposerLoader;use DoctrineCommonAnnotationsAnnotationRegistry;class ThinkPhpLoaderWrapper extends ClassLoader{ static protected $thinkLoader = Loader::class; /** * Autoload a class by it’s name */ public function loadClass($class) { return Loader::autoload($class); } /** * {@inheritDoc} */ public function findFile($class) { $allowedNamespace = [ ’apptestscontroller’ ]; $isAllowed = false; foreach ($allowedNamespace as $ns) { if (strpos($class, $ns) === 0) { $isAllowed = true; break; } } // 不允許被AOP的類,則不進入AopComposer if(!$isAllowed) return false; $obj = new Loader; $observer = new ReflectionClass(Loader::class); $method = $observer->getMethod(’findFile’); $method->setAccessible(true); $file = $method->invoke($obj, $class); return $file; }}

<?PHP// file: ./application/tests/behavior/Bootstrap.php 在剛剛我們新添加的文件當中// 這個方法 apptestsbehaviorBootstrap::moduleInit 的后面追加如下內容// 組成AOPComposerAutoLoader$originalLoader = $thinkLoader = new ThinkPhpLoaderWrapper();AnnotationRegistry::registerLoader(function ($class) use ($originalLoader) { $originalLoader->loadClass($class); return class_exists($class, false);});$aopLoader = new AopComposerLoader($thinkLoader);spl_autoload_register([$aopLoader, ’loadClass’], false, true);return $params;

在這里我們做了一個autload 并直接把它插入到了最前面(如果項目內還有其他autloader,請注意他們的先后順序)。

最后

現在我們再訪問一下 http://127.0.0.1/tests/test1/test1 你就能看到來自 aspect 輸出的信息了。

最后我們做個總結:

PHP7 目前沒有拓展實現的 AOP。 ThinkPHP5 有著自己的 Autoloader。 Go!AOP 的AOP實現依賴Class Autoload的 callback,通過替換原文件指向Proxy類實現。 ThinkPHP5 整合 Go!AOP 需要調整 autoload。

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

標簽: PHP
主站蜘蛛池模板: 日韩视频一区二区 | 在线视频中文字幕 | 日本黄色大片免费 | 欧美日韩不卡视频 | 中文字幕亚洲一区二区三区 | 成人高清视频在线观看 | 色欧美片视频在线观看 | 国产免费av网站 | 国产一区二区三区在线 | 午夜成人免费影院 | 欧美在线xxx| 盗摄精品av一区二区三区 | 精品视频二区三区 | 久久久国产精品 | 欧美日本韩国一区二区 | 色毛片 | 日韩精品在线观看一区 | 中文字幕国产一区 | 极品久久久久久 | 亚洲一区二区三区在线免费观看 | 中文无码久久精品 | 中文字幕在线资源 | 成人免费视频视频 | 欧美三级在线播放 | 在线国产一区二区 | 久久精彩 | 成年视频在线观看福利资源 | 国产精品久久九九 | 瑟瑟视频在线看 | 色黄网站 | 91在线观看视频 | 久久久精| 久久久免费| 一区二区三区国产免费 | 精品国产乱码久久久久久1区2区 | 91精品国产综合久久久久久丝袜 | 日本久久成人 | 久久久精品视频免费观看 | 国产视频第一区 | 天天干天天爱天天 | 成人影视网址 | 欧美成人精品一区 | 人人草人人| 天天看天天爽 | 亚洲看片网站 | www.亚洲| 色婷婷国产精品久久包臀 | 国产一区二区在线免费观看 | 国产精品99久久久久久久久久久久 | 成人午夜精品久久久久久久3d | 久久国产精品精品国产 | 欧美一级二级视频 | 久久免费精品视频 | 午夜精品久久久久久久星辰影院 | 成人99 | 久久久久久久久成人 | 免费一二区 | 亚洲人网站 | 日本成人中文字幕 | 久久亚洲国产精品 | 久久伊人精品视频 | 国产精品揄拍一区二区久久国内亚洲精 | 狠狠躁夜夜躁人人爽天天天天97 | 91网在线观看 | 98久久久| 真实国产露脸乱 | 嫩草影院在线观看91麻豆 | 中文字幕日韩一区二区不卡 | 蜜桃免费一区二区三区 | 国产人成精品一区二区三 | 免费国产视频在线观看 | av午夜电影 | 欧美日韩在线精品 | 亚州中文字幕 | 国产精品成人在线观看 | 91精品国产欧美一区二区成人 | 中文字幕第二十六页页 | 欧美激情在线精品一区二区三区 | 亚洲精品电影网在线观看 | 久草毛片| 91偷拍精品一区二区三区 | 91夜夜蜜桃臀一区二区三区 | 一级欧美 | 中文字幕亚洲字幕一区二区 | 免费看片一区二区三区 | 黄色片免费看. | 国产一区二区精品 | 国产一区二区三区视频在线观看 | 自拍视频在线播放 | 久草在线资源福利站 | 午夜毛片 | 草久久av| 91在线一区二区 | 日韩精品一区二区三区免费观看视频 | 久久亚洲精品综合 | 在线日韩欧美 | 在线成人av| 日韩视频在线一区 | 亚洲国产精久久久久久久 | 四虎影院最新网址 | 国产精品久久久久久久午夜 | 91影院在线观看 | 日韩精品一区二区在线观看视频 | 曰批视频在线观看 | 中国国产一级毛片 | 亚洲精品久久久一区二区三区 | 日韩高清黄色 | 日本成人一二三区 | 欧美日韩在线精品 | 日韩三区 | 久久久中文字幕 | 成人欧美一区二区三区白人 | av大片| 黄色一级免费电影 | 中国大陆高清aⅴ毛片 | 免费欧美 | 国产精品成人3p一区二区三区 | 国产精品国产三级国产aⅴ 精品91 | 国产一级片免费观看 | 成人一级 | 精品亚洲永久免费精品 | 国产成人精 | 亚洲美女久久 | 精品视频一区二区三区四区 | 日韩欧美精品在线 | 99精品欧美一区二区三区 | 欧美啊v | 国产午夜精品一区二区 | 天天草天天干 | www.日韩在线观看 | 久久久天堂国产精品女人 | 亚洲卡一 | 国产成人精品电影 | 日韩欧美国产一区二区三区 | 五月婷婷在线观看视频 | 亚洲欧美一区二区三区在线 | 视频一区久久 | 九九免费视频 | 羞羞视频在线网站观看 | 欧美日本精品 | 久久久久久久成人 | 奇米精品一区二区三区在线观看 | 97人人看| 亚洲免费视频大全 | 成人免费毛片aaaaaa片 | 久久久精| 天堂久久久久久 | av 一区二区三区 | 一区免费视频 | 日韩精品免费观看 | 麻豆毛片| 爱爱网av | 日韩精品一区二 | 国外成人在线视频网站 | 日韩免费视频 | av在线免费网址 | 亚洲国产免费看 | 久久久久久久久久久九 | 综合天天 | 国产精品第一 | 久久男人的天堂 | 亚洲欧美国产精品久久久久 | 国产精品久久久久久久久久免费 | 亚洲tv久久爽久久爽 | 亚洲精品久久久久国产 | 青青草一区二区 | 天天操天天碰 | 一区二区精品在线 | 久久国产欧美日韩精品 | 国产精品久久久久久久免费大片 | 成人激情视频在线 | 国产在线看片 | 久久一区二区三区四区五区 | 国产精品视频成人 | 久久久99精品免费观看 | 成人av一区二区三区 | 91一区二区三区 | 九色porny丨国产精品 | 久久99精品久久久久久琪琪 | 日韩福利在线观看 | 91久久久www播放日本观看 | 欧美激情a∨在线视频播放 中文字幕网在线 | 麻豆一区| 天天干天天躁 | 青青草在线免费视频 | 亚洲欧美日韩电影 | 精品国产三级a在线观看 | 在线观看亚洲精品 | 日本黄色电影网站 | 午夜免费福利视频 | 男女视频免费在线观看 | 中文字幕久久久 | 国产午夜精品一区二区 | 欧美日韩不卡合集视频 | 精品欧美乱码久久久久久 | 亚洲最新中文字幕 | 天天操,夜夜操 | 99视频在线免费观看 | 黄网在线 | 欧美一区二区三区aa大片漫 | 亚洲欧美网址 | 亚州精品天堂中文字幕 | 久久亚洲精品国产精品紫薇 | 久久一区 | 亚洲欧洲精品一区二区三区 | 成人免费在线视频观看 | 国产精品一区在线观看 | 国产一区二区视频免费 | 国产夜夜夜 | 理论片免费在线观看 | 久久欧美视频 | 国产在线精品视频 | 亚洲国产精品久久人人爱 | 羞羞视频在线观看免费 | 日韩不卡一区二区 | 91色在线| 精品久久中文字幕 | 国产精品成人一区二区三区夜夜夜 | 亚洲午夜精品视频 | 一区二区三区在线不卡 | 精品无人乱码一区二区三区的优势 | 国产成人在线播放 | 亚洲啊v | 一区二区三区在线免费 | 中文字幕免费在线 | 亚洲一区二区三区四区五区中文 | 天天天操 | 久久国产精品久久久久久久久久 | 岛国免费| 日韩在线不卡 | 亚洲精品国产a久久久久久 国产毛片毛片 | 亚洲精品一区二区网址 | 我要看一级黄色 | 国产精品国产精品国产专区不片 | 国产精品入口久久 | 久久人体视频 | 国产精品久久久久久久久久免费 | 国产一区二区视频精品 | a在线观看 | 一区二区在线电影 | 亚洲国内精品 | 在线观看精品视频网站 | 久久99精品久久久久久园产越南 | 久久久久久久国产精品 | 亚色在线 | 99久久精品一区二区成人 | 亚洲一区中文字幕在线观看 | 欧美日韩在线看 | 久久男人天堂 | 国产免费一区二区 | 成人精品一区二区 | 国产一区二区精品 | 99精品一级欧美片免费播放 | 亚洲欧美中文字幕 | 久久男女视频 | 久久婷婷视频 | www..99热| 精品久久久一区 | 欧美黄色一级毛片 | 国产a视频 | 国产视频久久久久久 | 日本久久免费 | 亚洲免费小视频 | 天天天天爽 | 中文字幕日韩在线视频 | 久久亚洲一区二区三区四区 | 精品一区二区三区三区 | 成人免费福利视频 | 奇米二区| 日本欧美久久久久免费播放网 | 亚洲精品一区二区三区蜜桃久 | av中文字幕在线 | 蜜桃av一区二区三区 | 中国av在线 | 成人久久久精品乱码一区二区三区 | 一区二区三区高清 | 日韩一级免费在线观看 | 日本天天操| 成人爽a毛片一区二区免费 美女高潮久久久 | 精品中文在线 | 国产美女av在线 | 午夜寂寞影视在线观看 | 国产大学生一区 | 亚洲欧美影院 | 午夜av在线 | 免费成人在线电影 | 中文字幕av一区二区 | 国产精品日韩 | 国产精品永久在线 | 黄色毛片在线观看 | 韩日中文字幕 | 91av视频在线观看 | 在线欧美日韩 | 免费黄色在线视频网址 | 精品久久99| 成人精品一区二区三区 | 亚洲综合福利视频 | 国产精品久久天天躁 | 欧美a在线 | 黄色片com | 色黄网站 | 亚洲一区中文字幕 | 欧美一区二区三区在线观看视频 | 精品视频一区二区三区 | av大片| 日韩一区二区精品视频 | 久久性| 国产在线精品一区二区三区 | www亚洲精品 | 999久久久国产精品 免费视频一区 | 精品日韩在线观看 | 欧美一级片在线观看 | 一级片av | 欧美a区| 在线播放三级 | 日本a v在线播放 | 精品一二区 | 欧美日韩一级二级三级 | 蜜桃comaaa | 日韩激情二区 | 成人无遮挡毛片免费看 | 精品二区 | 午夜不卡一区二区 | 红桃av一区二区 | 欧美日本免费 | 亚洲中午字幕在线观看 | 2020国产在线 | 成年人av网站 | 亚洲欧美韩国 | 天天摸夜夜操 | 中文字幕在线影院 | 中文字幕在线观看视频一区 | 国产亚洲在线 | 日韩中文字幕av在线 | 国内精品国产成人国产三级粉色 | 日韩欧美一区二区三区免费观看 | 一区二区三区免费网站 | 日韩免费| 欧美精品乱码久久久久久按摩 | 久久九九这里只有精品 | 久久9色| 亚洲中出 | 成人在线视频网站 | 精品三级在线观看 | 欧美国产91 | 色精品视频| 欧美日本韩国一区二区三区 | 亚洲精品国产剧情久久9191 | 最新av在线网址 | 日本久草 | 伊人网在线视频 | 欧美一级免费看 | 国产精品美女视频 | 免费在线黄 | 久久久久久久91 | 免费观看羞羞视频网站 | 99re在线| 欧美精品久久久 | 久久精品一区二区三区四区 | 1000部精品久久久久久久久 | 黄色一级视频 | 中文字幕在线不卡 | 免费一级毛片 | 日韩一级免费观看 | 欧美中文字幕一区二区 | 精品不卡| 久久视频精品 | 欧美日韩一区二区中文字幕 | 亚洲网站在线观看 | 日韩一区高清视频 | 最近免费中文字幕在线视频2 | 久久久99日产 | 欧美成人精品一区二区 | 日本精品久久久一区二区三区 | 久操综合| 亚洲精品久久久一区二区三区 | 成人欧美一区二区三区黑人孕妇 | av网战| 欧洲美女性开放视频 | 天天干天天摸 | 午夜影晥 | 国产精品久久久久免费 | 亚洲成人精品在线观看 | 免费一区| 黄色国产大片 | 欧美一级黄色影院 | 成年视频在线观看福利资源 | 99视频免费在线观看 | 精品久久久久久久久久久 | 91精品国产综合久久福利软件 | 亚洲综合在线一区 | 亚洲精品夜夜夜 | 一级黄色片看看 | 亚洲一区二区在线 | 久久久久国产一区二区三区 | 美女一区二区三区在线观看 | 日本午夜精品 | 亚洲精品v | 欧美成人小视频 | 一区二区亚洲视频 | 亚洲高清电影 | 黄色片视频在线观看 | 欧美一区二区久久久 | 成人亚洲精品久久久久 | 国产91黄色 | 精品一级| 一级在线看 | 日韩视频免费在线 | 午夜激情在线 | 91亚洲国产成人久久精品网站 | 亚洲免费人成在线视频观看 | 日韩视频在线观看视频 | 伊人午夜 | 免费亚洲一区二区 | 在线日韩欧美 | 91在线资源 | 日韩快播电影网 | 精品国产成人 | 每日更新亚洲 | 一级片在线观看 | av一区二区三区四区 | 日韩在线观看毛片 | 亚洲综合在线视频 | 国产一级片 | 91视频一区二区三区 | 福利视频二区 | 国产成人精品一区二区 | av免费网站在线观看 | 午夜国产精品视频 | 欧美大片一区二区 | 国产免费看 | 成人久久久久久久久 | 日韩精品一区二区三区在线播放 | 欧美成人精品一区二区三区 | 成人免费视频视频在线观看 免费 | 91电影在线看 | 免费国产黄网站在线观看视频 | 亚洲精品一区二区 | 在线播放91| 亚洲国产精品一区 | 国产在线一级片 | 欧美日韩在线看 | 亚洲综合在线视频 | 久久久久久久久久久久国产精品 | 91久久久久久久久 | 操操操夜夜操 | 丁香久久 | 国产 日韩 欧美 在线 | 欧美性吧 | 2021最新热播中文字幕-第1页-看片视频 青青青久草 | 日韩色图在线观看 | 欧美精品综合 | 国产成人高清视频 | 成人一区二区av | 午夜男人的天堂 | 欧美精品成人一区二区在线 | 在线欧美一区 | 一区二区三区在线播放 | 精品在线视频观看 | 成人一区二区三区在线观看 | 91激情视频| 国产成人精品综合 | 羞羞的视频网站 | 久久国内免费视频 | 成人av网页| 久久久久国产精品午夜一区 | 日韩精品极品视频在线 | 欧美精品在线一区 | 中文字幕在线视频精品 | 亚洲高清久久 | 国产精品7 | 欧美一级在线观看 | 成人水多啪啪片 | 久久久久一区二区三区 | 亚洲精品乱码 | 国产中文字幕在线 | 黄色毛片免费看 | 国产一区二区久久久 | 欧美日韩电影一区二区三区 | 色吧一区 | 亚洲第一色 | 成人在线一区二区三区 | 国产亚洲精品久久久久动 | 久久久久亚洲精品国产 | 久草 在线| 亚洲福利片 | 日本成人高清视频 | 欧产日产国产精品一二 | 久在线观看 | a久久| 亚洲欧美一区二区三区在线 | 亚洲黄色一级毛片 | 久久大陆 | 91大神xh98hx在线播放 | 日韩欧美中文在线 | 亚洲视频在线免费观看 | 日韩在线视频中文字幕 | 亚洲品质自拍视频网站 | h视频在线免费观看 | 久久久久久免费毛片精品 | 久久99精品视频 | 欧美日韩一区二区在线播放 | 午夜免费观看网站 | 国产亚洲精品久久久 | 国产毛片在线看 | 日韩一区二区三区在线 | 亚洲国产精品一区二区久久 | 男人的天堂在线视频 | 欧美一区二区三区 | 三级黄色片在线免费观看 | 在线观看91 | 蜜桃臀一区二区三区 | 久久国产精品毛片 | 国产成人精品一区二区三区四区 | 国产91富婆养生按摩会所 | 亚洲一区二区三区四区在线 | 欧美国产一区二区 | 日韩成人影院 | 国产精品一区二区无线 | 中文字幕综合 | 欧美日韩亚洲国产 | 天天操夜夜操免费视频 | 国内在线精品 | 久久99精品久久久久久琪琪 | 99精品热| 99热激情| 欧美亚洲综合久久 | 在线观看91| av中文字幕网 | 久久成人av | 国产小视频在线播放 | 国产91av视频在线观看 | 色综合久久天天综合网 | 国产成人av综合 | 99re在线 | 亚洲综合在 | 一区中文字幕 | 久久国产成人 | 日韩在线一区二区三区 | 亚洲www视频 | 99国产精品久久久久久久成人热 | 男女av在线 | 山岸逢花在线观看 | www国产成人免费观看视频,深夜成人网 | 在线视频二区 | 久草视频国产 | 欧美一级一区 | 亚洲成人动漫在线观看 | 亚洲欧洲精品视频在线观看 | 亚洲福利社区 | 国产欧美日韩综合精品 | 精品久久一区二区三区 | 日本不卡高字幕在线2019 | 日韩中文字幕a | 国产成人精品在线观看 | 做a视频在线观看 | 99精品国产高清在线观看 | 中文字幕av第一页 | 久久成人一区 | 粉嫩高清一区二区三区 | 一级黄色a视频 | 久热中文在线 | 欧美乱轮 | 国产一区二区三区在线 | 国产精品69毛片高清亚洲 | 日韩欧美一区二区三区免费观看 | 一区二区精品 | 91视频网址 | 久久国产精品免费一区二区三区 | 成人av免费在线观看 | 国产精品永久免费自在线观看 | 亚洲精品一区二区三区在线 | 亚洲一区在线日韩在线深爱 | 国产激情 | 久久久久久久久久久久网站 | 亚洲欧美日韩在线一区 | 日韩国产欧美视频 | 男人久久天堂 | 成人免费小视频 | 天天草天天干天天 | 一级做a爰片毛片 | 中文字幕日韩欧美一区二区三区 | 欧美日韩一区二区三区免费视频 | 在线成人www免费观看视频 | 99精品久久久 | 91久久国产综合久久 | 可以免费看黄视频的网站 | 久久久久久久久久久久91 | 一区在线视频 | 午夜免费福利视频 | 国产精品久久久爽爽爽麻豆色哟哟 | 日韩精品小视频 | av在线免费播放 | 日韩精品一区二区三区在线观看 | 亚洲片在线观看 | 久久99国产精品久久99大师 | 青草青草久热精品视频在线观看 | 日韩精品 电影一区 亚洲 | 午夜国产羞羞视频免费网站 | 国产精品国色综合久久 | 一区二区三区在线播放 | 国内精品久久久久 | 亚洲 中文 欧美 日韩 在线观看 | 国产欧美精品一区二区 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲a人| 最新免费视频 | 国产精品久久九九 | 精品伦精品一区二区三区视频 | 久久av一区二区三区 | 亚洲视频免费 | 久久久久久久久久久久91 | 国产乱a视频在线 | 精品国产一区二区三区久久久蜜 | 久久女同互慰一区二区三区 |