精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕欧美激情| 欧美激情综合| 精品视频免费在线| 久久观看最新视频| 香蕉久久一区二区三区| 日韩福利电影在线| 欧美日韩高清在线观看| 玖玖爱在线观看| 亚州精品国产| 午夜精品久久久久| 亚洲一区三区在线观看| 乱色精品无码一区二区国产盗| 香蕉视频成人在线观看| 久热精品视频在线| 97人妻天天摸天天爽天天| 国内欧美日韩| 亚洲国产精品一区二区www| 午夜精品一区二区三区四区 | 精品无码在线视频| 四虎国产精品永久在线国在线| 五月综合激情婷婷六月色窝| 在线成人性视频| 国产一区电影| 成人免费不卡视频| 91日本在线视频| 久久午夜鲁丝片| 国产日韩一区二区三区在线播放| 另类视频在线观看| 精品人妻中文无码av在线| 国产区精品视频在线观看豆花| 欧美日本一道本在线视频| 亚洲熟妇无码另类久久久| 国产成人在线视频免费观看| 国产女同互慰高潮91漫画| 国内一区在线| 亚洲爱爱综合网| 国产一区二区毛片| 国产在线a不卡| 最新在线中文字幕| 亚洲欧美日本日韩| 国内精品久久影院| 国产亚洲精品码| 欧美成人综合| 欧美人在线视频| 538任你躁在线精品视频网站| 97精品国产福利一区二区三区| 亚洲午夜精品视频| xxxx日本黄色| 精品国产一区二区三区香蕉沈先生| 亚洲精品久久久久久久久久久久 | 欧美网站免费观看| 国产深夜视频在线观看| 亚洲综合激情网| 免费观看亚洲视频| 日日夜夜天天综合入口| 亚洲乱码国产乱码精品精的特点| 一区二区三区四区不卡| 秋霞影院午夜丰满少妇在线视频| 国产精品每日更新| 中文字幕一区二区三区最新| 日本在线免费| 亚洲欧美另类小说视频| 久久av喷吹av高潮av| a视频在线播放| 亚洲影视在线观看| 尤物av无码色av无码| 老司机2019福利精品视频导航 | 国产精品久久久久久久成人午夜| 老司机精品视频在线| 成人黄色免费片| 亚洲av无码乱码国产精品| 高清av一区二区| 精品一区国产| 国产高清一级毛片在线不卡| 中文字幕一区二区在线观看| av不卡在线免费观看| 污污视频在线看| 精品久久久久国产| 国产裸体免费无遮挡| 青青国产精品| 欧美精品一区视频| 精品无码人妻一区二区免费蜜桃 | 久久久久亚洲视频| 国产一区二区视频在线播放| av色综合网| 噜噜噜噜噜在线视频| 国产精品嫩草99a| 91免费国产精品| xxxxxx欧美| 777色狠狠一区二区三区| www.555国产精品免费| 欧美男gay| 欧美大成色www永久网站婷| 久久亚洲天堂网| 精品一区二区三区免费观看| 国产精品久久波多野结衣| 黄色电影免费在线看| 亚洲女同ⅹxx女同tv| 欧美精品一区免费| 亚洲精品毛片| 日韩精品免费综合视频在线播放 | 午夜电影一区二区| 182午夜在线观看| 牛牛精品成人免费视频| 中文字幕av一区中文字幕天堂| 劲爆欧美第一页| 日本欧美一区二区三区乱码| 鬼打鬼之黄金道士1992林正英| 国产免费视频在线| 性做久久久久久免费观看欧美| 三级av免费观看| 色狠狠久久av综合| 蜜臀久久99精品久久久久久宅男 | 亚洲精品在线网站| 亚洲a∨无码无在线观看| 亚洲精品少妇| 91亚色免费| 性开放的欧美大片| 亚洲国产综合在线| 初高中福利视频网站| 不卡视频在线| 日韩av电影在线免费播放| 亚洲欧美国产高清va在线播放| 中文字幕不卡在线播放| www国产黄色| 国产精品1luya在线播放| 久久久精品日本| 亚洲一区二区视频在线播放| 久久久久综合网| 男人用嘴添女人下身免费视频| 国产一区二区三区| 成人精品在线视频观看| 日本10禁啪啪无遮挡免费一区二区| 操你啦视频在线| 欧美丰满一区二区免费视频| 免费成人深夜天涯网站| 免费日韩av片| 久久伊人一区| 在线观看涩涩| 精品视频偷偷看在线观看| www.99re7.com| 成人午夜在线视频| 久久久久久久9| 8x国产一区二区三区精品推荐| 久久久精品欧美| 国产男女猛烈无遮挡| 中文字幕一区二区视频| 天堂视频免费看| 亚欧美无遮挡hd高清在线视频| 国产人妖伪娘一区91| 在线视频91p| 欧美精品久久久久久久久老牛影院| 亚洲不卡的av| 黄页视频在线91| 最新av网址在线观看| 视频精品二区| 欧美激情综合色| 日韩中文字幕免费在线观看| 午夜av区久久| 无码人妻丰满熟妇啪啪欧美| 日韩成人一级大片| 一区二区三区四区不卡| 久久的色偷偷| 性色av一区二区咪爱| 三区在线视频| 欧美日韩免费不卡视频一区二区三区| 亚洲最大成人综合网| 精品中文字幕一区二区| a级片一区二区| 精品无人区一区二区| 欧美最猛性xxxx| аⅴ资源新版在线天堂| 在线综合亚洲欧美在线视频| 日本免费在线播放| 久久久.com| 91蝌蚪视频在线| 亚洲人妖在线| 色一情一区二区三区四区| 中文成人在线| 2021久久精品国产99国产精品| 黄色网址在线播放| 欧美一区二区三区成人| 亚洲精品www久久久久久| 国产日韩欧美不卡| 91精产国品一二三产区别沈先生| 精品69视频一区二区三区Q| 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧美日韩免费| 欧美色网一区二区| 精品无码m3u8在线观看| 国产网站一区二区三区| 手机看片国产精品| 久久亚洲国产精品一区二区| 国产精品99久久久久久大便| 欧洲vs亚洲vs国产| 亚洲综合社区网| 高清av不卡| 九九视频这里只有精品 | 久久精品99无色码中文字幕 | 麻豆精品一区| 国产不卡精品视男人的天堂| 五月婷婷视频在线观看| 伊人男人综合视频网| 可以免费看毛片的网站| 欧美日韩高清在线播放| 欧美videossex极品| 亚洲免费观看视频| 免费看的黄色网| 不卡一区二区三区四区| 激情久久综合网| 石原莉奈在线亚洲三区| r级无码视频在线观看| 国产精品久久久久9999赢消| 麻豆成人在线播放| xxxx日韩| 999在线观看免费大全电视剧| 忘忧草在线www成人影院| 久久久免费观看视频| 国产淫片在线观看| 中文字幕亚洲图片| 青青草视频在线观看| 亚洲国产成人av在线| 国产女人高潮的av毛片| 欧美日韩国产首页| 国产精品久久久久久久久夜色| 亚洲国产精品欧美一二99| 日韩三级久久久| 国产欧美一区二区精品久导航| 91视频啊啊啊| 波多野结衣中文一区| 久久av一区二区三| 国产一区二区三区免费| 加勒比av中文字幕| 久久99久久久久| 亚洲欧美自偷自拍另类| 日韩经典中文字幕一区| 久久久免费视频网站| 亚洲一区观看| 波多野结衣家庭教师在线| 亚洲乱码视频| 热99这里只有精品| 99精品热6080yy久久| 欧美久久久久久久久久久久久| 黄色日韩在线| 美脚丝袜脚交一区二区| 在线欧美福利| 久久综合色视频| 性8sex亚洲区入口| 那种视频在线观看| 视频一区中文字幕| 国产一级做a爰片久久| 蜜臀av一区二区在线免费观看| 少妇黄色一级片| 久久电影网站中文字幕| 做a视频在线观看| 国产精品一区二区不卡| 91亚洲一线产区二线产区| 成人动漫视频在线| 久久亚洲AV成人无码国产野外| 久久综合丝袜日本网| 一级特黄曰皮片视频| 国产精品福利电影一区二区三区四区 | 一级特黄aaa大片| 日韩欧美一级二级三级久久久| 亚洲精品国产精| 精品视频久久久久久| 888av在线| 欧美人与性动交a欧美精品| 欧美aa在线观看| 国产精品成久久久久三级| 亚洲精品第一| 精品蜜桃一区二区三区| 国产伦精品一区二区三区视频 | 亚洲综合第一区| 亚洲精品视频自拍| 国偷自拍第113页| 欧美在线免费播放| 国产三级视频在线播放| 亚洲国产精久久久久久| 黄色影院在线播放| 久久国产精彩视频| 麻豆视频在线看| 国产精品老牛影院在线观看| 国产精品视频一区二区三区| 国产一区不卡在线观看| 日韩av二区| 久久久性生活视频| 麻豆免费看一区二区三区| 99免费观看视频| 欧美国产一区在线| 欧美黄片一区二区三区| 91福利国产成人精品照片| 国产视频www| 亚洲黄色成人网| 成人午夜影视| 国自在线精品视频| 亚洲精品aa| 欧美一区激情视频在线观看| 亚洲综合小说| 欧美性猛交久久久乱大交小说| 国产精品1024| 亚洲天堂av中文字幕| 午夜国产不卡在线观看视频| 国产伦精品一区二区三区视频痴汉| 日韩hd视频在线观看| 国产黄色在线网站| 国产精品第2页| 精品资源在线| 免费在线精品视频| 日韩福利视频导航| 国产精品300页| 一卡二卡欧美日韩| 国产精品丝袜黑色高跟鞋| 亚洲视频一区二区| 黄色在线网站噜噜噜| 亚洲已满18点击进入在线看片| 欧美亚洲国产一区| 黄色一级片播放| 成人av在线电影| 九九热精品免费视频| 欧美另类变人与禽xxxxx| 国产在线你懂得| 欧洲成人免费视频| 精品午夜电影| 美脚丝袜脚交一区二区| 国产成人免费在线视频| 青花影视在线观看免费高清| 91久久久免费一区二区| 伦理片一区二区三区| 欧美最顶级的aⅴ艳星| 少妇一区二区三区| av7777777| 95精品视频在线| 日本午夜精品理论片a级app发布| 欧美一区二区三区免费大片| 国产1区在线| 亚洲mm色国产网站| **女人18毛片一区二区| 免费av不卡在线| 亚洲色图在线视频| 国产精品久久久久久69| 另类专区欧美制服同性| 96视频在线观看欧美| 在线精品亚洲一区二区| 极品美女销魂一区二区三区免费| 天美传媒免费在线观看| 欧美日产国产精品| 超碰在线免费播放| 91综合免费在线| 国产综合精品| 日韩精品视频一区二区| 欧美日韩免费在线| 国产亚洲成人精品| 亚洲精品一区二区三区影院| 波多野结衣在线观看| 久久综合中文色婷婷| 丝袜美腿亚洲综合| 黄大色黄女片18免费| 欧美年轻男男videosbes| 黄色片免费在线观看| 99久久伊人精品影院| 1024成人| 成年人免费观看视频网站| 欧美在线不卡视频| 免费黄色在线看| 国产69精品久久久久9999apgf| 在线亚洲激情| 色婷婷国产精品免| 日韩一区二区三区观看| 91资源在线观看| 欧洲精品久久| 国产中文字幕精品| 久久综合成人网| 亚洲欧洲成视频免费观看| 欧美黄色成人| 国产一区二区片| 久久人人97超碰com| 一女二男一黄一片| 欧美激情xxxxx| 国产欧美日韩在线观看视频| 亚洲欧美日韩网站| 欧美午夜激情视频| 天天在线视频色| 国产一区二区精品在线| 奇米影视一区二区三区小说| 加勒比av在线播放| 亚洲人免费视频| 亚洲一区二区三区中文字幕在线观看| 大陆极品少妇内射aaaaa| 亚洲色图丝袜美腿| 日本黄在线观看| 91成人理论电影| 日韩精品一级中文字幕精品视频免费观看 | 北条麻妃视频在线| 亚洲精品欧美激情| 国产精品天堂| 国产精品一码二码三码在线| 免费在线观看一区二区三区| 日本少妇久久久| 色婷婷久久一区二区|