精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

NIO、BIO、AIO與PHP實現

開發 前端
最近看到NIO,AIO,Netty,Promise話題很熱,我作為一個phper也想來湊湊熱鬧,湊著湊著發現周圍怎么都是javaer,jser。那么PHP能做NIO,AIO么?

前言

最近看到NIO,AIO,Netty,Promise話題很熱,我作為一個phper也想來湊湊熱鬧,湊著湊著發現周圍怎么都是javaer,jser。那么PHP能做NIO,AIO么?

什么BIO、NIO、AIO

BIO 同步阻塞I/O。

有小伙伴又要問了啥叫 同步,啥叫阻塞啊?

同步/異步 阻塞/非阻塞

同步: 兩個同步任務相互依賴,并且一個任務必須以依賴于另一任務的某種方式執行。 比如在A->B事件模型中,你需要先完成 A 才能執行B。 再換句話說,同步調用種被調用者未處理完請求之前,調用不返回,調用者會一直等待結果的返回。

異步: 兩個異步的任務完全獨立的,一方的執行不需要等待另外一方的執行。再換句話說,異步調用種一調用就返回結果不需要等待結果返回,當結果返回的時候通過回調函數或者其他方式拿著結果再做相關事情,

阻塞: 阻塞就是發起一個請求,調用者一直等待請求結果返回,也就是當前線程會被掛起,無法從事其他任務,只有當條件就緒才能繼續。

非阻塞: 非阻塞就是發起一個請求,調用者不用一直等著結果返回,可以先去干其他事情。

以上就是這四個詞匯的解釋,那么放到計算機IO上,比較接地氣的解釋

BIO (Blocking I/O)

那么我們拿快遞攬件來舉例,一個快遞公司,有一部分工作是攬件,它的工作模式是只能一個一個的攬件,你要寄快遞,必須排隊,一個一個的來,這就是 同步 。好不容易輪到你了,你把快遞一扔給他,他還讓給你等著,快遞工作人員說,我們這后面還有些信息要錄入,快遞要檢查,必須等我們快遞公司檢查完畢后,你才能離開,這叫 阻塞 。

NIO (No-Blocking I/O)

同步非阻塞的I/O

繼續啊,拿快遞公司舉例。這個快遞公司發現有些用戶在后面排隊,排著排著,太久了就去隔壁快遞公司了,怎么辦呢?快遞公司想了個辦法,置辦了一個發號器和一批收納盒。來一個客戶,就把快遞放在一個收納盒里,再給用戶一個編號,此時再來一個用戶,不論前面一個的快遞是否檢查完畢,還是給他一個收納盒,發一個編號。不同客戶之間不排隊,一來就被受理了,這就是 非阻塞。 我們再來看看內部,快遞呢還是一個個地錄入信息,X光檢查,這樣就是 同步 運行的,等待快遞人員檢查完畢叫號,客戶拿到回執才能離開快遞點。

AIO (Asynchronous I/O)

異步非阻塞IO

也有Javaer叫他 NIO2,快遞公司攬件又升級了,做了一個快遞柜,客戶又寄件需求,來了就放入快遞柜,然后通過手機掃碼關注這個柜子的動態,客戶就可以離開了,此時服務被受理,并能馬上離開。這就是 非阻塞 。等到快遞人員來攬件時,會將柜子里面的寄件一并取走,快遞點集中一起處理這些快遞件,發現有問題的件,不是立即停下手中的活等待客戶來出來,而是放一旁通知客戶來,然后繼續處理下一個快遞,這就是 異步。

異步 阻塞 IO

同步/異步 阻塞/非阻塞,這4個名詞,兩兩組和,還有一個就是 異步/阻塞。

那么我們還是先把例子舉出來吧,還是這個快遞點,來了一批客戶來寄口罩到國外,由于有很大的可能會通不過檢查,所以,快遞點把大家都留了下來。等所有的 寄件 都檢查完了在統一給大家發送回執單,這就是 阻塞 。快遞人員檢查寄件時,發現問題不是立馬通知客戶來處理,而已放到一邊,繼續處理下一個。 這就是 異步。

偽異步 IO

這種模式,底層實現是多個 同步阻塞的BIO, 同時運行。

最后總結一下:

阻塞與非阻塞指的的是當不能進行讀寫(網卡滿時的寫/網卡空的時候的讀)的時候, I/ O操作立即返回還是阻塞;同步異步指的是,當數據已經 ready 的時候,讀寫操作是同步讀還是異步讀,階段不同而已。

區別

異步/同步在計算機區別

以上是一些舉例,只是幫助大家理解記憶,接下來我們看看計算上的實現。

最初計算機提供的Web服務,采用的是 CGI 協議,就是純正的 BIO 模式。一個cgi進程監聽一個端口,處理完一個請求,才能接收下一個http請求。這就是同步。

而客戶的實際體驗式是"異步"的,那是因為后來優化了,CGI 程序能夠自我fork進程的達到同時響應多個http請求的效果。 

注意,我們這里討論的基礎是 單進程 ,上的 異步/同步。

阻塞/非阻塞在計算機區別

這里拿購物流程舉例,用戶的下單,需要做如下操作:

  •  商品可售否
  •  庫存數量
  •  用戶余額
  •  觸發哪些優惠規則
  •  獎券有效性
  •  ...

按照一般做法就是一步步驗證,上一個檢查完了,再進行下一個檢查,這就是 阻塞 的方式。

那么非阻塞方式如何做呢,假設在微服務環境中,商品,庫存,獎券,促銷都是獨立的系統,調用商品服務,發起商品可售檢查請求;不等商品服務回復,繼續調用庫存服務,發起商品可售庫存請求;緊接著依次發出...檢查請求,這樣5個檢查項目的請求同時發起,最后,我等他們所有的請求都回復我,再來一起來校驗是否所有的檢查都通過了。就這種發起請求不等響應,就繼續做下一件事的叫 非阻塞 。

PHP 能做什么

PHP 與 BIO 實現

PHP已經實現啦,這是最基本的好么。但平時測試時卻感覺是不阻塞啊,好,我們來一起做個實驗,將nginx和php-fpm的進程限制為1個試試。php-fpm就是 多進程的 BIO,現在我們強項改成單進程。

  •  調整Nginx配置

調整 /etc/nginx/nginx.conf 文件: 

  1. ## 把nginx worker數量設置為1  
  2. worker_processes 1; 

好了之后我們通過ps命令檢查下

  •  調整PHP配置

調整 /etc/php/php-fpm/conf.d/www.conf 文件: 

  1. pm = static  
  2. pm.max_children = 1  
  3. pm.start_servers = 1  
  4. pm.min_spare_servers = 1  
  5. pm.max_spare_servers = 1 

找到這幾個配置都改為如上數值。

最后的結果如下

我在index.php代碼里面加入第一行就加入了sleep。 

  1. <?php  
  2. sleep(5); 

我們同時打開兩個網頁,一起訪問試試

通過Firefox 抓包可以發現,其中一個耗時5s,另一個頁面耗時9.3s,(0.7s誤差是我手速慢了) 這就是 BIO。

好的,我們再做一個實驗。把以上nginx,php-fpm配置中1改成2.然后我們打開三個網頁,同時訪問試試看。

結果是有兩個網頁耗時5s,一個是9s,也就是說服務器同時處理了2個請求,第三個請求等待了4s才被處理。這就是 多線程-BIO,一個服務同時接待的客戶數量取決與worker的數量。

PHP 與 NIO 實現

我們寫的大部分php-fpm代碼以及第三方框架都是阻塞的。PHP也是支持非阻塞IO編程的。

這里其他博主也用PHP原生代碼實現NIO編程: PHP回顧之socket編程

I/O 多路復用

在這段小Demo中,PHP 實現 NIO 核心兩個函數就是 stream_set_blocking、stream_select()。

通過以上源碼,發現原生的NIO實現還是比較繁瑣,不易讀的。同時,我就想問一句了,這個 NIO 就是為了實現一個 socket server 么,我們來看看Netty 官網。打開Netty首頁,它是這樣描述自己的

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

第一句話:Netty是一個 NIO 客戶端 服務框架, 能快速輕松地開發協程客戶端。第二句話:簡化了網絡編程,如創建TCP和UDP套接字服務。

好,重點是什么?第一句話就是重點——開發 協程客戶端!回到我們業務上,剛剛舉了一個例子,購物到下單,有很多個流程需要做檢查,按照一般的BIO那么程序時序圖如下:

從上可以看到,三個檢查依次分開執行。那么客戶的等待時間是大于,庫存檢查時間加上,產品檢查時間加上,促銷檢查時間 的。

假設, 庫存,產品,促銷是三個微服務,然后購物車服務用 NIO客戶端,與這三個微服務交互,那么會是怎樣的效果呢:

這里,我們發起檢查請求時,是按照順序發起的,但不等第一個服務返回檢查結果就開始發起下一個檢查請求。最后三個服務都返回后,綜合結果,返回給用戶。那么這三個檢查的耗時,就等于一個服務(耗時最長的那個服務)的檢查耗時。大大減少得了購物車服務響應時間。

我看到一些 Netty、 NodeJS、Swoole 等教程 通篇都在講如何實現一個WebSocket服務,TCP服務或者是Http服務。對,這是最基礎的,但 NIO 框架核心優勢在開發一個非阻塞客戶端!這才是它的優勢,這才是和 BIO 編程差異化所在。

NIO 客戶端

看到以上兩個時序圖,還是給大家演示一下用PHP原生代碼實現一個 PHP-BIO 。 PHP Simple NIO Server

建議大家點擊鏈接,把源碼git clone https://gitee.com/xupaul/php-nio-server 到本地運行一下,再來看截圖更容易理解。

這三個所依賴的服務響應耗時,我設置為:inventory: 4s, product: 2s, promo:6s

藍色框和黃色框標注了兩個請求,我們主要看參數 noBlocking: true/false 的不同, 第一個是非阻塞方式請求, 可以看到共耗時6s,第二個共耗時12s! (第三個為啥和第二個耗時不一樣——6s這個留給大家去研究)。顯而易見得非阻塞IO的優勢。不過這代碼結構就不那么友好了,看到代碼 nio_server.php 中,有兩種請求方式,阻塞代碼流程還能看懂檢查完成后就綜合結果返回,而非阻塞方式中,發起三個檢查后程序流程就開始進入到handleMessage,代碼進入哪個分支,取決于 socket_read 的消息,不運行起程序來,沒有文檔,很難搞懂整個程序流程。 

那么,有沒有什么什么方便的php類庫,讓我們編碼更友好一點呢,這里介紹下 ReactPHP

這里我用ReactPHP重新實現 nio_server, 代碼在這里

這個回調代碼寫起來有點 NodeJS 的味道呢,當你的PHP沒啟用 libev 之類的拓展時,ReactPHP內部Loop依然用的 stream_select(), 可以看源碼 ~/react/event-loop/src/StreamSelectLoop.php@290 .

執行效果如下:

 

能同時發起請求這個功能,那還得提一下 curl_multi, 它能同時發起多個curl請求,最后不斷檢查是否所有的curl請求已完成。這只是在發起多個Http curl請求階段做到 非阻塞 運行。

還有個拓展pThreads,能夠實現多線程,不過對PHP編譯參數有限制,需要在線程安全的模式下運行。

pThreads 現在已不是PHP官方所推薦使用的拓展了,當然了這種就屬于偽異步IO范疇了

PHP 與 AIO

PHP 異步&非阻塞 編碼。

此處, 非阻塞I/O 系統調用( nonblocking system call ) 和 異步I/O系統調用 (asychronous system call)的區別是:

  •  一個非阻塞I/O 系統調用 read() 操作立即返回的是任何可以立即拿到的數據, 可以是完整的結果, 也可以是不完整的結果, 還可以是一個空值。
  •  而異步I/O系統調用 read() 結果必須是完整的, 但是這個操作完成的通知可以延遲到將來的一個時間點。 
  1. <?php 
  2. /**  
  3.  * 消息處理  
  4.  */  
  5. function handleMessage() {  
  6.     global $changed, $clients, $cartCheck;  
  7.     foreach ($changed as $key => $client) {  
  8.         while (true) {  
  9.             // read socket data  
  10.             $msg = @fread($client, 1024);  
  11. //            $msg = 1 
  12.             if ($msg) {  
  13.                 // application process  
  14.             } else {  
  15.                 if (feof($client)) {  
  16.                     // TODO check data eof  
  17.                 }  
  18.                 break;  
  19.             } 

可以看到,在文件~/nio_server.php 中, 雖然設置了 stream_set_blocking false, 但是在209行的 fread() , 這是在一個循環里讀,這是一個阻塞讀取。這的系統函數的響應速度是受系統IO影響的。

而異步調用中,當有I/O事件時,系統會將數據復制到用戶內存中,也就是準備好數據,再通知到用戶程序。

那么原生PHP顯然是不支持的,這里呢就要引入PHP拓展,就是 Event,或者 Ev 拓展。這篇博客主要講 Event。

Event 拓展是基于 libevent 庫封裝而來,而 Ev 拓展是基于 libev 庫封裝而來。 通過PHP接口,和C庫的接口就能看到他們之間的聯系,所以,如果通過PHP文檔找不到相關資料可以去,看看C庫的文檔。而 Libevent 年久失修,不推薦大家使用。

這里放上用Event實現的Tcp Server demo

在用Event做這個demo中,我用到了EventBuffer ,讀、寫都和Buffer交互, Buffer數據是用戶態數據,不會等待系統I/O或被阻塞,避免了程序耗時在I/O數據拷貝上。由此PHP 也能實現 AIO 程式,提高CPU利用率。

講到這里,就會感覺這個PHP的AIO有些牽強了,我這找了其他博主的論點來幫助大家理解,這兩張圖展示了 用戶程序,與內核采用 分阻塞 和 異步 交互時的異同。

上面是非阻塞IO,下面是異步IO。中間的區別就是非阻塞IO的應用,需要不斷的去訪問內核獲取數據(當然了,每一次訪問都是有求必應,能取到數據),但不一定能取完; 而異步IO的特點就是,你告訴內核取數據,取完整了,我再一起發給應用程序。這就是Linux對異步IO的定義。

那么再看到我們的Demo,這是一個簡單TCP server,一個TCP請求系統是能知道一個數據的包大小的,是否接收完畢,這是傳輸層要做的。而我們的應用層面,是接收到數據還要做合并,分包,以及數據轉碼。 這就和 AIO 數據結果必須是完整的,概率有些出入,(在系統層面顯然是完整的) . 在應用層面呢,一次性收到的不一定是完整的數據,那么就還需要做額外代碼來解決合包,分包,沾包。這就是AIO實現Tcp Server的需要問題。

為了解決以上問題,就需要自定義TCP通訊協議。相當于自己開發RPC框架了。

那我們來看看Http呢,在應用層面有明確公開的協議(協議有頭無尾,標明了每次請求具體長度),并有豐富的實現。這就是一個非常適合采用AIO編程協議。而PHP的Event拓展,恰好有EventHttp實現。

話不多說,先上 Demo。 

  1. <?php  
  2. ...  
  3. /**  
  4.  * event http 請求回調函數  
  5.  *   
  6.  * @param   \EventHttpRequest   $req    Http請求對象  
  7.  */  
  8. function _http_about($req) {  
  9.     echo __METHOD__, PHP_EOL;  
  10.     // print request URL  
  11.     echo "URI: ", $req->getUri(), PHP_EOL;  
  12.     // print request's headers  
  13.     echo "Input headers:"; var_dump($req->getInputHeaders());  
  14.     echo "\n >> Sending reply ...";  
  15.     /**  
  16.      * @var \EventBuffer    $buf  
  17.      */  
  18.     $buf = $req->getOutputBuffer();  
  19.     $buf->add("It's about Event http server");  
  20.     $req->sendReply(200, "OK", $buf);  
  21.     echo "OK\n";  

這里是一個回調函數,入參數就是一個由 EventHttp 封裝的http請求對象。這就滿足了以上 調用時非阻塞,數據完全準備好后,再通知回調——異步I/O。好,借助Event,PHP就實現了AIO.

結語

關于性能提升,這就不做壓測了,主要論證PHP實現NIO、AIO 的可行性。也實際給大家展示了幾個Demo, 簡單展示了如何寫異步,非阻塞程序。可以看到 異步編程 對大家的要求是比較高的,當需要發起 IO 操作,都要用非阻塞方式調用,不然就會阻塞整個進程,而純粹的異步編程就是單進程,阻塞后該服務就不能響應新的請求。同時呢,我們常用PDO,mysqli,Redis這些不得不用的拓展,也只提供了阻塞讀的接口。而當前PHP環境中,可以說“幾乎所有”的第三方框架,都是阻塞編碼,如果你的項目中使用了其他框架,那么你寫的代碼沒問題,不保證依賴的第三方框架阻塞方式請求 I\O. 所以,一般 PHP 異步編程,都會采用多進程異步,讓異步來提高每個請求的響應速度,如果進程阻塞,就讓其他空閑的進程處理新進入的請求。

以上,希望大家通過文章能了解 異步/同步、阻塞/非阻塞區別,以及對PHP異步、非阻塞編程。

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2022-04-16 16:52:24

Netty網絡服務器客戶端程序

2020-10-10 19:37:27

BIO 、NIO 、A

2023-07-11 08:40:02

IO模型后臺

2019-10-18 08:22:43

BIONIOAIO

2011-03-31 10:41:49

BIONIOIO

2021-08-12 18:48:31

響應式編程Bio

2021-06-11 17:26:06

代碼Java網絡編程

2023-06-26 07:39:10

2021-03-04 08:34:55

同步阻塞非阻塞

2018-09-19 14:53:02

NIOBIO運行

2023-03-31 07:49:51

syscall庫Echo Serve

2025-08-26 02:24:00

JavaI/O模型

2024-11-06 16:38:51

IO網絡

2011-12-15 11:39:25

JavaNIO

2019-05-05 08:50:42

阻塞非阻塞BIO

2023-03-07 08:00:12

netpollGo

2020-10-14 08:50:38

搞懂 Netty 線程

2021-12-01 07:26:13

IO模型異步

2024-03-26 07:59:32

IO模型多路復用

2023-03-06 08:37:58

JavaNIO
點贊
收藏

51CTO技術棧公眾號

欧美 中文字幕| 91插插插插插插| 日韩三区免费| 一区在线中文字幕| www.久久久| 亚洲 欧美 成人| 午夜精品毛片| 日韩精品中文字| 欧美激情国内自拍| 黑人巨大精品欧美一区二区桃花岛| 国产精品乱人伦一区二区| 99久久国产免费免费| 亚洲成人av影片| 欧美精品偷拍| 色吧影院999| 精品人妻一区二区三区日产乱码卜| 素人啪啪色综合| 黄色成人在线播放| 自拍偷拍视频在线| 美女毛片在线看| 国产激情一区二区三区四区| 日韩美女视频免费在线观看| 欧美丰满熟妇bbbbbb| 欧美伦理在线视频| 日韩av中文字幕在线免费观看| 91欧美视频在线| 成人爽a毛片免费啪啪| 一区二区成人在线| 一区精品在线| 国产视频在线看| 99re这里只有精品视频首页| 91大片在线观看| 一级aaaa毛片| 日韩福利电影在线观看| 91国内在线视频| 九九免费精品视频| 五月天综合网站| 伊人久久精品视频| 日本黄色网址大全| 日本成人7777| 精品国产乱码久久久久久老虎| 午夜精品中文字幕| 国产精品xxx| 欧美午夜一区二区三区| 日本成人在线免费视频| sese综合| 日本丰满少妇一区二区三区| 欧美一级视频免费看| 岛国毛片av在线| 亚洲午夜影视影院在线观看| 麻豆一区二区三区在线观看| 男人影院在线观看| 日韩一区中文字幕| 手机看片日韩国产| gogogogo高清视频在线| 亚洲色图清纯唯美| 黄色三级中文字幕| yellow在线观看网址| 亚洲成av人在线观看| 日本黄色片一级片| av伦理在线| 黄网站色欧美视频| 国产精品欧美激情在线观看| 成年美女黄网站色大片不卡| 色婷婷精品久久二区二区蜜臀av| aaa毛片在线观看| 黄瓜视频成人app免费| 91国偷自产一区二区开放时间 | 成人jjav| 日本一区二区免费在线| 亚洲成色www久久网站| 999国产在线视频| 综合久久久久久久| 丁香婷婷综合激情| 欧美magnet| 欧美色图片你懂的| 亚洲欧美日本一区二区| 99亚洲乱人伦aⅴ精品| 日韩精品在线私人| 91香蕉国产视频| 国产精品地址| 欧美壮男野外gaytube| 中文字幕免费高清在线观看| 精品在线播放免费| 成人欧美一区二区三区视频xxx| 天堂在线视频网站| 国产精品天干天干在观线| 亚洲区成人777777精品| 91吃瓜在线观看| 在线看国产一区二区| 人人爽人人爽av| 国产毛片久久久| 一区二区三区视频免费在线观看 | 一区二区三区日韩精品| 少妇高潮喷水在线观看| 本网站久久精品| 日韩精品中文字幕一区二区三区| 国产精品三级在线观看无码| 久久一区二区三区喷水| 欧美激情xxxxx| 懂色av蜜臀av粉嫩av分享吧最新章节| 极品尤物av久久免费看| 久久久久久欧美精品色一二三四| 香蕉视频在线播放| 高跟丝袜欧美一区| 国产探花一区二区三区| 精品中国亚洲| 久久伊人91精品综合网站| 中文字幕亚洲高清| 国产精品系列在线播放| 日本高清视频一区二区三区 | 国产精品欧美综合在线| 久久久久久人妻一区二区三区| 欧美理论影院| 亚洲精品在线观看视频| 91麻豆免费视频网站| 日韩制服丝袜先锋影音| 国产精品一区二区免费| 精品自拍一区| 欧美在线观看视频一区二区| 奇米777第四色| 午夜激情久久| 国产成人精品一区二区三区| 乱精品一区字幕二区| 亚洲欧洲国产日本综合| 成年人网站大全| 日韩成人精品| 久久精品视频网站| 在线观看日批视频| 久久精品免视看| 免费av网址在线| 天天操综合520| 久久久久中文字幕2018| 国产精品久久欧美久久一区| 欧美国产乱子伦| 国产免费视频传媒| 亚洲免费专区| 26uuu另类亚洲欧美日本一| www.国产.com| 亚洲一区二区三区四区不卡| 中国男女全黄大片| 欧美a级在线| 91免费版网站在线观看| 精品孕妇一区二区三区| 欧美日本乱大交xxxxx| 国产精品麻豆一区| 久久av中文字幕片| 亚洲欧洲日夜超级视频| 成人黄色免费观看| 日韩中文字幕国产| 国产在成人精品线拍偷自揄拍| 国产精品视频一二三区| 久久久久久三级| 日韩欧美高清| 51国偷自产一区二区三区| 高潮毛片在线观看| 日韩美一区二区三区| 久久久久久久久艹| 成人免费黄色在线| 国产网站免费在线观看| 午夜免费视频网站| 亚洲国产视频二区| 午夜精品www| 色就是色亚洲色图| 91国产成人在线| 91av手机在线| 国产精品白丝jk黑袜喷水| 久久亚洲a v| 日韩成人一级| 国产精品成人国产乱一区| www.亚洲资源| 欧美一级理论片| 国产一级视频在线播放| www.日韩在线| 一级黄色香蕉视频| 亚洲精品97| 国产一级二级三级精品| 久久野战av| 久久国产精品影视| 婷婷国产在线| 欧美日韩久久久久久| 真实国产乱子伦对白在线| 不卡av电影在线播放| 日本成人在线免费视频| 夜间精品视频| 色噜噜狠狠色综合中国| 久久国产精品网| 国产99精品| 91麻豆蜜桃| 欧美va在线观看| 欧美黑人巨大精品一区二区| 水中色av综合| 日韩一区二区三区观看| 亚洲免费黄色网址| 亚洲免费视频中文字幕| 国产伦精品一区二区三区妓女| 蜜芽一区二区三区| 男女视频网站在线观看| 四季av一区二区凹凸精品| 国产精品免费观看高清| 福利一区二区免费视频| 国内揄拍国内精品| 91caoporn在线| 日韩精品极品毛片系列视频| 亚洲天堂自拍偷拍| 天天综合色天天综合色h| www.97视频| 久久久久国产精品免费免费搜索| 亚欧精品在线视频| 奇米色一区二区| 999在线观看视频| 97精品国产| 欧美性xxxx69| 国产乱人伦丫前精品视频| 国产欧美精品一区二区三区-老狼| 91高清视频在线观看| 久久久精品亚洲| gogogo高清在线观看免费完整版| 欧美成人r级一区二区三区| 黄色av一区二区| 欧美日韩美女在线| 欧美成人精品一区二区免费看片 | 国产精品久久久一区二区三区| а√天堂资源国产精品| 欧美一区二区影院| 日本动漫理论片在线观看网站| 中文字幕日韩在线观看| 视频一区二区三区在线看免费看 | 三年中文在线观看免费大全中国| 国产精品亚洲综合久久| 免费cad大片在线观看| 日韩精品诱惑一区?区三区| 人禽交欧美网站免费| 红杏aⅴ成人免费视频| 5566中文字幕一区二区| 国产伊人久久| 国产精品久久久久久久久久免费| 中文字幕 在线观看| 高清欧美性猛交| 日本性爱视频在线观看| 久久福利视频导航| 黄视频网站在线| 日韩专区在线观看| 日本精品一区二区三区在线播放| 亚洲视频在线视频| 国产三级视频在线看| 亚洲男人天堂2023| 婷婷五月综合久久中文字幕| 欧美一区二区三区四区视频| 国产一区二区自拍视频| 欧美精品少妇一区二区三区| 亚洲综合五月天婷婷丁香| 欧美性一区二区| 最新黄色网址在线观看| 欧美天天综合网| 国产精品欧美亚洲| 日韩一级高清毛片| 亚洲精品久久久久久无码色欲四季 | 高清成人在线观看| 涩视频在线观看| av成人免费在线观看| 欧美精品黑人猛交高潮| 91丨九色丨国产丨porny| 91精品人妻一区二区三区蜜桃欧美| 久久久亚洲欧洲日产国码αv| 香蕉网在线播放| 国产日韩一级二级三级| 欧美日韩国产黄色| 综合亚洲深深色噜噜狠狠网站| 波多野结衣家庭教师| 亚洲最大成人网4388xx| 国产成人在线观看网站| 欧美日韩在线看| 国产一级片一区二区| 欧美二区在线观看| 亚洲国产精品久久人人爱潘金莲| 精品对白一区国产伦| 日本国产在线| 色偷偷888欧美精品久久久| gogo在线高清视频| 97在线观看视频| 欧洲精品久久久久毛片完整版| 91视频-88av| 欧美日韩大片免费观看| 日韩av高清在线播放| 天天插综合网| 波多野结衣家庭教师在线播放| 日韩二区三区在线观看| 天堂在线精品视频| 久久综合九色欧美综合狠狠| 亚洲 欧美 国产 另类| 亚洲国产一区二区在线播放| www.com亚洲| 日韩免费高清av| 二区三区在线播放| 欧美精品激情视频| 九色成人搞黄网站| 国内一区二区在线视频观看| 精品视频免费| 精品视频在线观看一区| 蜜乳av一区二区三区| 精品一区二区视频在线观看| 日本一区二区三区在线观看| 免费在线看黄网址| 欧美日韩一区二区不卡| 日本激情一区二区三区| 中文字幕欧美专区| 麻豆免费在线| 亚洲综合第一页| 日韩电影免费网站| 黄色片久久久久| 成人一道本在线| 蜜臀av午夜精品久久| 色综合天天综合在线视频| www.99视频| 日韩在线观看精品| 91精品xxx在线观看| 国产嫩草一区二区三区在线观看| 日韩在线精品| 日本老熟妇毛茸茸| 91免费观看在线| 国产亚洲成人av| 8x8x8国产精品| 亚洲搞黄视频| 国产精品久久97| 亚洲动漫在线观看| 国产老熟妇精品观看| 成人免费高清视频| 在线免费日韩av| 欧美一区二区在线观看| eeuss影院在线观看| 国产91热爆ts人妖在线| 窝窝社区一区二区| 欧美变态另类刺激| 成人涩涩免费视频| 久久久久久久中文字幕| 在线不卡中文字幕| 欧美被日视频| 成人欧美一区二区三区黑人| 日本不卡高清| 午夜宅男在线视频| 国产精品网站在线播放| 国产情侣小视频| 伊人久久久久久久久久久久久 | 国产一区二区香蕉| 日韩免费视频| 91pony九色| 亚洲精品视频在线| 99久久一区二区| 欧美成人精品一区二区三区| 精品国产亚洲日本| 8x8ⅹ国产精品一区二区二区| 激情深爱一区二区| 国产精品九九九九九九| 日韩写真欧美这视频| 日韩123区| 精品麻豆av| 丝袜美腿亚洲综合| 一级黄色片网址| 欧美日韩国产另类一区| 男人的天堂在线视频免费观看 | 国产精品乱码妇女bbbb| 一级成人免费视频| 欧美激情免费视频| 欧美午夜18电影| 成人三级视频在线播放| 国产精品私人影院| 国产模特av私拍大尺度| 美女黄色丝袜一区| 国产精品x8x8一区二区| av免费播放网址| 国产精品麻豆一区二区| 99久久99久久久精品棕色圆| 欧美高跟鞋交xxxxxhd| 风间由美一区二区av101| 国产最新免费视频| 中文字幕不卡的av| 国产乱码精品一区二区三区精东| 欧美猛交ⅹxxx乱大交视频| 蜜桃久久久久| 婷婷六月天在线| 一区二区日韩av| 欧美美女搞黄| 成人a级免费视频| 日韩午夜免费| 久久久久99精品成人| 日韩亚洲欧美在线观看| 久久男人av资源站| 伊人久久大香线蕉av一区| 国产成人自拍网| 69xxxx国产| 欧美裸体男粗大视频在线观看| 偷窥自拍亚洲色图精选| www.久久av.com| 欧美色图在线视频| а√天堂资源地址在线下载| 国产乱码精品一区二区三区日韩精品| 久久九九电影| 久久久久久激情| 最近2019中文免费高清视频观看www99|