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

PHP 高性能的事件循環(huán)庫 Revolt

開發(fā) 前端
ext-uv? 暴露 UV::SIG*? 常量用于可觀察信號。使用 EventDriver? 的應用程序在注冊信號回調或依賴 ext-pcntl 時需要手動指定適當的整數信號編號。

Revolt是什么?

Revolt是并發(fā)PHP應用程序的堅如磐石的事件循環(huán)。通常的PHP應用程序將大部分時間花在等待I/O上。雖然PHP是單線程的,但可以使用協(xié)作多任務來允許并發(fā)性,方法是使用等待時間來做不同的事情。

PHP的傳統(tǒng)同步執(zhí)行流程很容易理解。一次只做一件事。如果查詢數據庫,則發(fā)送查詢并等待數據庫服務器的響應。一旦你有了答案,你就可以開始做下一件事。

ReactPHP和其他庫已經在PHP中提供了很長一段時間的協(xié)作多任務。然而,它們的事件驅動特性與許多現(xiàn)有的接口不兼容,需要不同的思維模型。PHP 8.1內置了fibers,它提供了協(xié)作多線程。調用可以是異步的,沒有promise或回調,同時仍然允許非阻塞I/O。

每個使用協(xié)同多任務的應用程序都需要一個調度器(也稱為事件循環(huán)),這個包提供了這個調度器。Revolt是結合了React和ReactPHP的事件循環(huán)實現(xiàn)的多年經驗的結果。然而,它并不是一個用于編寫并發(fā)PHP應用程序的成熟框架,而只是提供了必要的公共基礎。不同的(強烈的)固執(zhí)己見的庫可以在它的基礎上構建,React和ReactPHP將繼續(xù)共存。

Revolt 支持事件

  • Defer 回調在事件循環(huán)的下一次迭代中執(zhí)行。如果有延遲調度,事件循環(huán)不會在迭代之間等待。
  • Delay 在指定的秒數后執(zhí)行回調。秒的分數可以表示為浮點數。
  • Repeat 在指定的秒數后重復執(zhí)行回調。秒的分數可以表示為浮點數。
  • Stream readable 當流上有數據要讀取或連接關閉時,將執(zhí)行回調。
  • Stream writable 當寫緩沖區(qū)中有足夠的空間來接受要寫入的新數據時,就會執(zhí)行回調。
  • Signal 當進程從操作系統(tǒng)接收到特定信號時執(zhí)行回調。

安裝

composer require revolt/event-loop

注意:此包可以作為Composer依賴項安裝在PHP 8.1及更高版本上。

示例

<?php

require __DIR__ . '/vendor/autoload.php';

use Revolt\EventLoop;

$suspension = EventLoop::getSuspension();

$repeatId = EventLoop::repeat(1, function (): void {
    print '++ Executing callback created by EventLoop::repeat()' . PHP_EOL;
});

EventLoop::delay(5, function () use ($suspension, $repeatId): void {
    print '++ Executing callback created by EventLoop::delay()' . PHP_EOL;

    EventLoop::cancel($repeatId);
    $suspension->resume(null);

    print '++ Suspension::resume() is async!' . PHP_EOL;
});

print '++ Suspending to event loop...' . PHP_EOL;

$suspension->suspend();

print '++ Script end' . PHP_EOL;

在執(zhí)行上面的例子時,你應該看到這樣的輸出:

++ Suspending to event loop...
++ Executing callback created by EventLoop::repeat()
++ Executing callback created by EventLoop::repeat()
++ Executing callback created by EventLoop::repeat()
++ Executing callback created by EventLoop::repeat()
++ Executing callback created by EventLoop::delay()
++ Suspension::resume() is async!
++ Script end

這個輸出說明了事件循環(huán)內部發(fā)生的事情就像它自己獨立的程序一樣。您的腳本將不會繼續(xù)通過 $suspension->suspend() 點,除非掛起點通過 $suspension->resume() 或 $suspension->throw() 恢復。

雖然一個應用程序可以而且經常幾乎完全在事件循環(huán)的范圍內發(fā)生,但我們也可以使用事件循環(huán)來做一些事情,比如下面的例子,它為交互式控制臺輸入施加了一個短暫的超時:

<?php

require __DIR__ . '/vendor/autoload.php';

use Revolt\EventLoop;

if (\stream_set_blocking(STDIN, false) !== true) {
    \fwrite(STDERR, "Unable to set STDIN to non-blocking" . PHP_EOL);
    exit(1);
}

print "Write something and hit enter" . PHP_EOL;

$suspension = EventLoop::getSuspension();

$readableId = EventLoop::onReadable(STDIN, function ($id, $stream) use ($suspension): void {
    EventLoop::cancel($id);

    $chunk = \fread($stream, 8192);

    print "Read " . \strlen($chunk) . " bytes" . PHP_EOL;

    $suspension->resume(null);
});

$timeoutId = EventLoop::delay(5, function () use ($readableId, $suspension) {
    EventLoop::cancel($readableId);
    
    print "Timeout reached" . PHP_EOL;

    $suspension->resume(null);
});

$suspension->suspend();

EventLoop::cancel($readableId);
EventLoop::cancel($timeoutId);

顯然,我們可以在這個例子中簡單地同步使用 fgets(STDIN) 。我們只是在演示可以根據需要進出事件循環(huán),以混合同步任務和非阻塞任務。

Timers 定時器

事件循環(huán)公開了幾種調度計時器的方法。

Deferred 回調

  • defer() 調度回調在事件循環(huán)的下一次迭代中執(zhí)行。
  • 此方法保證了一個干凈的調用堆棧,以避免循環(huán)的當前迭代中其他事件的饑餓。defer()回調總是在事件循環(huán)的下一個tick中執(zhí)行。
  • 在 defer()計時器執(zhí)行之后,它會被事件循環(huán)自動垃圾收集,因此應用程序不需要手動取消關聯(lián)的回調。
  • 像所有事件回調一樣,defer() 計時器可以被禁用和重新啟用。如果您在調度它和它實際運行之間禁用此回調,則事件循環(huán)將無法對其進行垃圾收集,直到它執(zhí)行為止。因此,如果 defer() 回調從未真正執(zhí)行以釋放任何相關資源,則必須手動取消該回調。

案例

<?php
/**
 * @author Tinywan(ShaoBo Wan)
 * @email 756684177@qq.com
 * @date 2024/1/31 18:24
 */

require 'vendor/autoload.php';

use Revolt\EventLoop;

echo "line 1\n";

EventLoop::defer(function (): void {
    echo "line 3\n";
});

echo "line 2\n";

EventLoop::run();

輸出

line 1
line 2
line 3

Delayed 回調

  • delay() 計劃在延遲 n 秒后執(zhí)行回調
  • delay() 回調在執(zhí)行后也會被事件循環(huán)自動垃圾回收,應用程序不應該手動取消它,除非他們希望在執(zhí)行前完全放棄回調。
  • 被禁用的 delay() 回調會重置其延遲時間,以便重新啟用后,原始延遲時間再次從零開始。
  • 與 defer() 回調一樣,如果定時器在創(chuàng)建后被應用程序禁用而無法運行,則必須手動取消計劃用于一次性執(zhí)行的定時器以釋放資源。

案例

<?php
/**
 * @author Tinywan(ShaoBo Wan)
 * @email 756684177@qq.com
 * @date 2024/1/31 18:24
 */

require 'vendor/autoload.php';

use Revolt\EventLoop;

EventLoop::delay(3, function (): void {
    print '3 seconds passed';
});

EventLoop::run();

3秒后輸出

3 seconds passed

Periodic 定期回調

  • repeat() 調度回調以每 n 秒重復執(zhí)行一次。
  • 與所有其他事件回調一樣, repeat() 定時器可以隨時禁用/重新啟用。
  • 與 defer() 和 delay() 回調不同, repeat() 回調必須顯式取消以釋放關聯(lián)的資源。一旦 repeat() 回調的目的實現(xiàn),如果不能通過 cancel() 釋放它們,將導致應用程序中的內存泄漏。僅僅禁用 repeat() 回調是不夠的,因為它們的數據只有在取消時才被釋放。

案例

<?php
/**
 * @author Tinywan(ShaoBo Wan)
 * @email 756684177@qq.com
 * @date 2024/1/31 18:49
 */

require 'vendor/autoload.php';

use Revolt\EventLoop;

EventLoop::repeat(0.1, function ($callbackId): void {
    static $i = 0;

    if ($i++ < 3) {
        echo "tick\n";
    } else {
        EventLoop::cancel($callbackId);
    }
});

EventLoop::run();

輸出

tick
tick
tick

定時器偏差

重復計時器基本上是簡單的延遲計時器,在觸發(fā)適當的處理程序之前會自動重新調度。它們受定時器漂移的影響。多個計時器可能會堆疊在一起,以防它們作為協(xié)程執(zhí)行。

Fibers 纖程

Revolt被設計為可以很好地與纖維一起工作。所有事件回調都在單獨的纖程中運行,并且可以隨時掛起它。如果在事件回調中沒有掛起,則纖程將被重用于將來的事件回調以保存資源。

掛起允許通過掛起當前執(zhí)行上下文來等待事件,直到所討論的事件發(fā)生。它們將掛起當前纖程并返回到事件循環(huán),或者如果從纖程外部(即從 {main} )調用,則開始運行事件循環(huán)。

應使用 Revolt\EventLoop\Suspension API暫停和恢復光纖。Suspension 對象可以使用 Revolt\EventLoop::getSuspension() 創(chuàng)建。在獲得 Suspension 對象之后,可以注冊事件回調以調度當前纖程的恢復。$suspension->suspend() 將掛起當前的執(zhí)行上下文,直到它通過 $suspension->resume() 或 $suspension->throw()恢復。

案例:讓我們暫停主執(zhí)行上下文,直到有數據從 STDIN 讀取或超時到期:

<?php

require __DIR__ . '/vendor/autoload.php';

use Revolt\EventLoop;

if (\stream_set_blocking(STDIN, false) !== true) {
    \fwrite(STDERR, "Unable to set STDIN to non-blocking" . PHP_EOL);
    exit(1);
}

print "Write something and hit enter" . PHP_EOL;

$suspension = EventLoop::getSuspension();

$readableId = EventLoop::onReadable(STDIN, function ($id, $stream) use ($suspension): void {
    EventLoop::cancel($id);

    $chunk = \fread($stream, 8192);

    print "Read " . \strlen($chunk) . " bytes" . PHP_EOL;

    $suspension->resume(null);
});

$timeoutId = EventLoop::delay(5, function () use ($readableId, $suspension) {
    EventLoop::cancel($readableId);
    
    print "Timeout reached" . PHP_EOL;

    $suspension->resume(null);
});

$suspension->suspend();

EventLoop::cancel($readableId);
EventLoop::cancel($timeoutId);

自動超時輸出

Write something and hit enter
Timeout reached

按Enter鍵盤輸出

Write something and hit enter

Read 1 bytes

Signals 信號

信號是類Unix操作系統(tǒng)中的標準化消息。

EventLoop::onSignal() 可用于對發(fā)送到進程的信號作出反應。

<?php

require __DIR__ . '/vendor/autoload.php';

use Revolt\EventLoop;

// Let's tick off output once per second, so we can see activity.
EventLoop::repeat(1, function (): void {
    echo "tick: ", date('c'), "\n";
});

// What to do when a SIGINT signal is received
EventLoop::onSignal(SIGINT, function (): void {
    echo "Caught SIGINT! exiting ...\n";
    exit;
});

EventLoop::run();

SIGINT 信號: 當用戶按某些終端鍵時, 引發(fā)終端產生的信號. 如Ctrl+C鍵, 這將產生中斷信號SIGINT. 它將停止一個已失去控制的程序。

Ctrl+C 輸出

tick: 2024-01-31T11:54:03+00:00
tick: 2024-01-31T11:54:04+00:00
tick: 2024-01-31T11:54:05+00:00
tick: 2024-01-31T11:54:06+00:00
tick: 2024-01-31T11:54:07+00:00

tick: 2024-01-31T11:54:08+00:00
tick: 2024-01-31T11:54:09+00:00

tick: 2024-01-31T11:54:10+00:00
tick: 2024-01-31T11:54:11+00:00

tick: 2024-01-31T11:54:12+00:00
^CCaught SIGINT! exiting ...

從基本原理中可以清楚地看到,信號回調可以像任何其他事件回調一樣被啟用、禁用和取消。一般來說,如果所有回調都消失了,只有信號回調仍然存在,那么您希望退出事件循環(huán),除非您沒有主動等待該事件發(fā)生。

信號號可用性

ext-uv 暴露 UV::SIG* 常量用于可觀察信號。使用 EventDriver 的應用程序在注冊信號回調或依賴 ext-pcntl 時需要手動指定適當的整數信號編號。


責任編輯:武曉燕 來源: 開源技術小棧
相關推薦

2025-11-05 01:11:00

PHP高性能Linux

2014-11-25 10:03:42

JavaScript

2014-02-18 10:22:04

Objective-C循環(huán)

2019-03-14 15:38:19

ReactJavascript前端

2023-12-14 08:01:08

事件管理器Go

2021-05-27 10:02:57

Go緩存數據

2015-07-23 15:17:37

JavaScript循環(huán)語句

2024-11-06 11:25:06

2015-03-27 11:42:44

日志管理PHPSeasLog

2022-06-29 08:55:46

orjsonPythonJSON

2024-10-21 09:06:15

2011-01-26 10:46:30

FreeBSD 8.0NginxPHP

2012-08-08 10:10:31

PHP

2025-01-26 00:00:15

PHP協(xié)程控制權

2021-05-28 05:18:08

PHP語言roadrunnner

2018-10-10 14:27:34

數據庫連接池MySQL

2023-09-22 11:48:37

2015-03-13 19:34:41

2019-07-23 11:41:45

數據庫SQLDocker

2024-08-12 08:43:09

點贊
收藏

51CTO技術棧公眾號

最近免费中文字幕视频2019| 午夜精彩视频在线观看不卡| 91网址在线看| 理论片一区二区在线| 国产精品美女久久久久久久久久久| 国产美女精彩久久| 久一视频在线观看| 综合亚洲色图| 欧美日本在线观看| 日韩美女爱爱视频| 免费人成在线观看网站| 久久99热这里只有精品| 久久久久久美女| 美国美女黄色片| 999久久精品| 欧美午夜精品理论片a级按摩| 蜜桃网站在线观看| av片在线看| 成人sese在线| 成人免费视频a| 国产精品午夜影院| 欧美国产另类| 中文字幕久热精品在线视频| 无码精品一区二区三区在线播放| 婷婷久久免费视频| 色综合久久88色综合天天免费| 四虎免费在线观看视频| 黄色av免费在线观看| 丁香婷婷综合五月| 96sao精品视频在线观看| 免费观看一区二区三区毛片| 欧美成人69| 色av吧综合网| 老头老太做爰xxx视频| 欧美调教网站| 精品处破学生在线二十三| 在线播放av中文字幕| 日本欧美韩国| 色又黄又爽网站www久久| 99色这里只有精品| 欧美大片黄色| 一区二区三区在线免费视频| 亚洲AV无码成人精品一区| 成年网站在线| 中文在线一区二区| 日本在线成人一区二区| 能在线看的av| 久久久综合视频| 免费av一区二区三区| 免费看日韩av| 成人高清免费观看| 国产精品久久久一区二区三区 | 亚洲动漫第一页| 中国黄色录像片| 成人免费看片| 亚洲精品乱码久久久久| 国产日韩欧美大片| 伊人福利在线| 亚洲一区二区三区在线看| 真人做人试看60分钟免费| 黄色网页在线看| 亚洲免费观看高清完整| 一二三四中文字幕| 波多一区二区| 精品国产乱码久久久久久天美| aa视频在线播放| 女人让男人操自己视频在线观看 | 日韩中文一区二区| 日韩欧美精品在线| 一边摸一边做爽的视频17国产| 久久综合另类图片小说| 亚洲美女激情视频| 亚洲色图欧美色| 亚洲精品成人影院| 欧美激情中文网| chinese国产精品| 全部av―极品视觉盛宴亚洲| 国产有码一区二区| www.欧美国产| 99综合电影在线视频| 欧美在线视频一区二区三区| 午夜视频成人| 一区二区三区在线播放| 欧美亚洲一二三区| 国产极品一区| 精品美女在线观看| 亚洲精品乱码久久久久久久久久久久 | 精品少妇一区二区三区免费观| 国产成人精品免费视| 色噜噜狠狠狠综合曰曰曰88av| 国精品无码一区二区三区| 亚洲国产专区校园欧美| 国产第一区电影| 99在线小视频| 久久久天堂av| 一区二区三区四区免费观看| 超碰91在线观看| 日本韩国欧美在线| 日韩精品xxx| 国产探花一区在线观看| 九九热r在线视频精品| 91精品国产高清一区二区三密臀| 韩国成人福利片在线播放| 久久99国产精品| 秋霞午夜在线观看| 黑人巨大精品欧美一区免费视频 | 91视频国产观看| 一区二区免费电影| 超碰在线视屏| 日韩欧美卡一卡二| 婷婷丁香综合网| 一本综合久久| 97在线电影| 91在线网址| 福利视频导航一区| 91精产国品一二三| 国产精品国产三级国产在线观看| 欧美做受高潮1| 人人妻人人澡人人爽人人欧美一区| 国产精品免费免费| 北条麻妃在线视频| 婷婷综合一区| 久久久久久久久久久免费精品| 亚洲无码久久久久| 久久免费精品国产久精品久久久久| 激情五月六月婷婷| 超碰国产精品一区二页| 亚洲无限av看| 国产成人精品一区二三区| 国产a视频精品免费观看| 亚洲最新免费视频| 成人国产在线| 一区二区三区动漫| 中文字幕日韩免费| 久久久蜜臀国产一区二区| 99精品人妻少妇一区二区| 成人三级av在线| 久久久久成人精品| 亚洲第一视频在线播放| 自拍偷拍国产亚洲| 污污的视频免费| 欧美a级成人淫片免费看| 国产精品久久在线观看| 男人的天堂在线免费视频| 欧美日韩免费在线观看| 奇米777第四色| 亚洲黄色影院| 久久99精品国产99久久| 国产黄大片在线观看| 欧美精品一区二区三区蜜臀| 豆国产97在线 | 亚洲| 高清在线观看日韩| 国产中文字幕乱人伦在线观看| 亚洲精品午夜| 97在线观看免费高清| 亚洲色图另类小说| 色婷婷一区二区三区四区| 黄色网址在线视频| 美女尤物久久精品| 日韩精品一区二区三区四区五区| 欧美123区| 久久中文字幕视频| 亚洲欧美国产高清va在线播放| 亚洲午夜激情网页| 中文乱码人妻一区二区三区视频| 国产精品一国产精品k频道56| 欧美日韩一区综合| 成人全视频在线观看在线播放高清| 中文字幕在线日韩| 99久久免费国产精精品| 亚洲一区二区影院| 亚洲一区二区观看| 免费人成精品欧美精品| 色一情一乱一乱一区91| 久久国产精品免费精品3p| 日韩**中文字幕毛片| 米奇777四色精品人人爽| 日韩精品一区国产麻豆| a v视频在线观看| 国产区在线观看成人精品 | 亚洲ww精品| 欧美激情一区二区三区在线视频观看 | 日韩av资源在线播放| 涩涩视频在线观看| 一区二区三区在线免费观看 | 久久99国产成人小视频| 91精品国产自产在线老师啪| www.8ⅹ8ⅹ羞羞漫画在线看| 国产一区二区三区在线观看视频| 国产熟女精品视频| 狠狠色狠狠色综合日日小说| 东京热无码av男人的天堂| 国产成人精品一区二| 国产熟女高潮视频| 91精品啪在线观看国产18| 久久精彩视频| 国产一区一区| 日本精品中文字幕| 91极品在线| 亚洲欧美日韩久久久久久| 国产ts变态重口人妖hd| 在线亚洲一区二区| 精品在线视频免费| 国产精品久久精品日日| 黄色av网址在线观看| 九九视频精品免费| wwwxxx黄色片| 亚洲人成久久| 欧洲xxxxx| 欧洲激情视频| 久久综合狠狠综合久久综青草| 国产视频网站一区二区三区| 日本久久亚洲电影| gogo高清午夜人体在线| 久久韩国免费视频| porn视频在线观看| 日韩av在线播放资源| 性一交一乱一透一a级| 欧美揉bbbbb揉bbbbb| 免费av网站在线| 亚洲高清免费视频| 欧美日韩一级大片| 中文字幕在线不卡视频| 最近中文字幕免费视频| 成人av网站免费观看| 天堂网成人在线| 看电视剧不卡顿的网站| 能看的毛片网站| 国产毛片久久| 黄色大片在线免费看| 欧美久久99| 欧洲美女和动交zoz0z| 欧美wwwww| 亚洲美女网站18| 精品一区二区三区在线| 欧美亚洲另类久久综合| 亚洲日产av中文字幕| 精品一区久久| caoporn成人| 岛国一区二区三区高清视频| 国产一区二区三区精品在线观看| 成人免费淫片aa视频免费| 日韩免费大片| 91免费视频网站| 国产免费av国片精品草莓男男| 91精品视频在线播放| 少妇精品视频在线观看| 国产精品专区一| 伊人久久大香| 亚洲字幕在线观看| 亚洲日本视频在线| 成人区精品一区二区| 视频国产精品| 国产欧美一区二区三区另类精品 | 韩国av中文字幕| 黑人狂躁日本妞一区二区三区 | 欧美成人性福生活免费看| 精品国产av一区二区| 精品久久一区二区| 天天操天天干天天| 日韩美女av在线| 国产有码在线| y97精品国产97久久久久久| 成人黄色网址| 97欧美精品一区二区三区| 国产日韩电影| 成人精品视频久久久久| 在线精品国产亚洲| 精品亚洲一区二区三区四区五区高| 亚洲系列另类av| 一本色道久久综合亚洲精品婷婷 | 五月天激情播播| 国产91在线观看| 巨胸大乳www视频免费观看| 91欧美一区二区| 秋霞网一区二区三区| 亚洲毛片av在线| 欧美h在线观看| 欧美日韩国产综合视频在线观看| 精品人妻aV中文字幕乱码色欲| 日韩大陆欧美高清视频区| 高清美女视频一区| 欧美大成色www永久网站婷| 亚洲第一av| 91老司机在线| 图片婷婷一区| 中文字幕一区二区三区5566| 99日韩精品| www.污网站| 久久蜜臀中文字幕| 欧美xxxx黑人xyx性爽| 日韩欧美主播在线| 国产露脸无套对白在线播放| 日韩精品免费综合视频在线播放| 欧美激情办公室videoshd| 性欧美xxxx交| 电影91久久久| 色狠狠久久av五月综合| 精品av久久久久电影| 国产精品自拍视频在线| 99这里只有久久精品视频| 国产一区二区精彩视频| 色综合久久综合网| 开心激情综合网| 久久精品国产精品亚洲| xx欧美视频| 国产精品三区www17con| 99精品电影| 成人性视频欧美一区二区三区| 国产ts人妖一区二区| 国产福利在线导航| 日韩欧美在线看| 人妻偷人精品一区二区三区| 久久综合九色九九| 国产精品4hu.www| 品久久久久久久久久96高清| 在线看片欧美| 亚洲成人福利视频| 综合av第一页| 91亚洲欧美激情| 亚洲网站视频福利| 国产精品一区二区av影院萌芽| 国产精品一区二区免费看| 综合国产精品| 国产精品自在自线| 国产精品福利一区二区| 亚洲国产精品无码久久久| 亚洲精品自拍视频| 波多野结衣视频一区二区| 成人欧美一区二区三区视频xxx | 国产又黄又大又爽| 中文字幕九色91在线| 成人在线高清| 色999日韩自偷自拍美女| 久久精品欧洲| 亚洲最大成人网站| 黑人巨大精品欧美一区二区| 五月天婷婷在线观看| 国语自产精品视频在线看| www.亚洲一二| 亚洲国产精品成人天堂| 国产xxx精品视频大全| 久久久美女视频| 亚洲精品一区二区三区香蕉| 国产网红女主播精品视频| 国产精品一区二| 一本色道久久| 乐播av一区二区三区| 91福利视频网站| av资源在线观看免费高清| 国产欧美精品一区二区| 水蜜桃精品av一区二区| 天堂av.com| 亚洲自拍偷拍av| 亚洲日本在线播放| 日本成人免费在线| 欧美在线免费看视频| 日本高清久久久| 一区二区三区视频在线看| 亚洲av无码乱码国产精品久久| 欧美激情久久久久| 日韩美女国产精品| 中文字幕国内自拍| 亚洲精品乱码久久久久| 日本人妻熟妇久久久久久 | 深夜福利亚洲| 国产aaa免费视频| 91在线你懂得| 中文字幕码精品视频网站| 欧美精品手机在线| 欧美调教在线| 污污网站在线观看视频| 亚洲综合视频在线观看| 日本福利片在线| 国产中文日韩欧美| 亚洲国产黄色| 国产又粗又硬视频| 精品国产网站在线观看| 欧美三级精品| 4444在线观看| 久久天堂av综合合色蜜桃网| 波多野结衣小视频| 欧美成人手机在线| 亚洲图片久久| www.色.com| 色婷婷综合久久久中文一区二区| 免费av不卡| 免费看污久久久| 国模一区二区三区白浆| 日韩视频在线观看一区| 美女av一区二区| 国产成人精品一区二区免费看京| 深爱五月综合网| 欧美视频中文字幕在线| 久草免费在线| 日本成人三级电影网站| 粉嫩嫩av羞羞动漫久久久 | 三妻四妾的电影电视剧在线观看| 亚洲日本理论电影| 99精品偷自拍|