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

免费网站免费进入在线| 日韩大片免费在线观看| 欧美h版在线观看| 亚洲国产成人精品视频| 精品视频一区二区三区四区| 波多野结衣影片| 欧美a级在线| 亚洲美女av网站| 中文字幕一区久久| 国产丝袜精品丝袜| 国产精品免费视频观看| 国产精品日韩一区二区三区 | 午夜精品免费在线| 欧美综合77777色婷婷| 国产99久一区二区三区a片 | 亚洲欧美日韩国产成人精品影院| 国产女主播一区二区三区| 最新黄色网址在线观看| 黄色一区二区三区四区| 尤物99国产成人精品视频| 国产人妻黑人一区二区三区| 久久久国产精品网站| 偷拍与自拍一区| 中文字幕第50页| jizz视频在线观看| 91亚洲精品久久久蜜桃网站| 91美女高潮出水| 男人天堂2024| 亚洲毛片视频| 欧美激情免费在线| 欧美黄色aaa| 日韩精品免费| 国产亚洲激情在线| 国产精品无码一区二区三| 精品视频在线观看免费观看| 欧美色男人天堂| aⅴ在线免费观看| 92久久精品| 一区二区激情视频| 成人在线免费观看网址| 男人在线资源站| 中文字幕精品一区二区三区精品| 欧美日韩电影一区二区| 天天干天天摸天天操| 国产精品一二三四| 亚洲a∨日韩av高清在线观看| 少妇无套内谢久久久久| 老牛嫩草一区二区三区日本| 欧美在线一区二区三区四| 日本一二三区视频| 亚洲国产午夜| 97av在线视频免费播放| 日本系列第一页| 一本色道久久综合亚洲精品不卡| 欧美多人爱爱视频网站| 精品国产乱码久久久久久鸭王1| 91一区在线| www.欧美免费| 久久中文免费视频| 欧美午夜电影在线观看| 欧美激情第1页| 日韩激情一区二区三区| 亚洲婷婷在线| 欧美高清在线播放| 国产亚洲色婷婷久久99精品| 狠狠88综合久久久久综合网| 欧美高清性猛交| 91av在线免费视频| 午夜在线一区| 国产剧情日韩欧美| 国产伦精品一区二区三区视频痴汉| 久久av老司机精品网站导航| 国产精品日韩欧美大师| 国产伦理一区二区| 成人午夜激情影院| 欧美理论一区二区| 91青青在线视频| 亚洲免费观看视频| 日本阿v视频在线观看| 午夜影院在线播放| 欧美在线免费观看视频| 肉色超薄丝袜脚交| 成人在线超碰| 有码中文亚洲精品| 欧美成人手机视频| 久久中文精品| 91久久国产精品| 亚洲欧美综合在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲av综合色区| 蜜桃麻豆av在线| 欧美日韩国产一级二级| 美女露出粉嫩尿囗让男人桶| 曰本一区二区三区视频| 久久精品视频播放| 国产一级在线观看视频| 日韩不卡一区二区三区| 91青青草免费在线看| 日韩福利一区二区| 亚洲激情一二三区| 波多野结衣作品集| 日韩精品久久久久久久软件91| 日韩精品视频中文在线观看 | 精品国产123区| 久久影院模特热| 国产一区二区视频网站| 国产91丝袜在线播放| 日韩av不卡播放| 国产精品69xx| 欧美乱熟臀69xxxxxx| jlzzjizz在线播放观看| 综合国产精品| 国产精品久久不能| 亚州精品国产精品乱码不99按摩| 国产精品福利一区| 精品久久久久久无码国产| av综合网页| 中文字幕亚洲综合久久| 国产成人在线视频观看| 国产一区二区影院| 亚洲精品一区二区三区蜜桃久| 超免费在线视频| 91精品国产乱| 我要看一级黄色录像| 久久久久国产精品午夜一区| 99久久伊人精品影院| 欧美成人性生活视频| 亚洲一二三级电影| 黄色a级三级三级三级| 精品久久网站| 日本精品视频在线播放| 特级丰满少妇一级aaaa爱毛片| 亚洲欧美一区二区三区国产精品| 色多多视频在线播放| 精品在线播放| 日本高清视频一区| 四虎影视精品成人| 天天色天天爱天天射综合| 中文字幕永久免费| 欧美午夜免费影院| aa成人免费视频| 少妇视频在线| 欧美成人官网二区| 国产无码精品一区二区| 国产91精品入口| 国产在线播放观看| 激情av综合| 69av在线视频| 青青青草网站免费视频在线观看| 狠狠色香婷婷久久亚洲精品| www.日本高清| 亚洲欧美日韩国产一区二区| 精品综合久久久| 欧美大胆a人体大胆做受| 亚洲成人网在线观看| 国产在线精品观看| 91网站最新网址| 欧美 日韩 国产一区| 亚洲制服欧美另类| 国产精品成人免费电影| 波多野结衣在线影院| 欧美日韩一区成人| 亚洲欧美小视频| 国产成人精品影视| 欧美 丝袜 自拍 制服 另类| 偷拍视屏一区| 国产精品久久久久久久久久久久久久| 免费人成黄页在线观看忧物| 在线一区二区观看| 五月天精品视频| 久久不射中文字幕| 一本色道久久99精品综合| 成人噜噜噜噜| 97精品免费视频| 国产高清一级毛片在线不卡| 欧美剧情电影在线观看完整版免费励志电影 | 99精品视频在线播放观看| 黄色a级片免费| 久久免费av| 99蜜桃在线观看免费视频网站| h片在线观看下载| 一区二区av在线| www.xxx国产| 日韩欧美国产高清91| 影音先锋男人资源在线观看| 国产成人精品影视| 天天碰免费视频| 一区二区电影| 久久综合精品一区| 国内精品视频| 欧美在线视频一区| www.在线视频| 亚洲欧美日韩在线高清直播| 91国内精品视频| 欧美视频中文字幕在线| 国产免费久久久久| 91论坛在线播放| 日韩精品aaa| 丝袜美腿一区二区三区| 国产精品无码电影在线观看| 国产中文字幕一区二区三区| 亚洲一区二区三区香蕉 | 亚洲天堂男人| 一区二区冒白浆视频| 女人抽搐喷水高潮国产精品| 成人在线视频网| gay欧美网站| 欧美激情免费在线| 国产在线1区| 亚洲人成网站999久久久综合| 亚洲国产成人在线观看| 91久久精品网| 日本免费一二三区| 亚洲婷婷综合色高清在线| 魔女鞋交玉足榨精调教| 成人免费高清在线| 五月六月丁香婷婷| 免费看日韩精品| 激情视频综合网| 一本久道久久综合狠狠爱| 无码人妻精品一区二区蜜桃网站| 日韩理论电影大全| 日韩午夜视频在线观看| 亚洲区小说区图片区qvod| 91丨九色丨国产| 国产免费区一区二区三视频免费| 国产精品美乳在线观看| 高清av不卡| 午夜精品在线观看| 久久国产精品黑丝| 欧美激情二区三区| 蜜臀av在线| 欧美激情亚洲一区| av官网在线播放| 久久综合色88| 91小视频xxxx网站在线| 久久精品人人做人人爽| 成人在线视频亚洲| 欧美成人剧情片在线观看| 91精选在线| 免费97视频在线精品国自产拍| 国产一二三在线观看| 亚洲欧洲国产精品| 九色在线视频| 国产一区二区三区精品久久久| 青青色在线视频| 亚洲日本欧美中文幕| 久久精品色图| 亚洲香蕉伊综合在人在线视看| 国产三级视频在线看| 一区二区三区视频免费| 日韩av中文| 伦伦影院午夜日韩欧美限制| 老司机在线永久免费观看| 中文字幕日韩视频| 黄色网页在线观看| 欧美激情精品久久久| 538在线精品| 97在线日本国产| 偷拍视频一区二区三区| 国产精品电影久久久久电影网| 成人精品国产亚洲| 国产主播欧美精品| 亚洲国产精品免费视频| 国产精品入口免费| 国产区精品区| av不卡在线免费观看| 国产精品vip| 男女av免费观看| 美女视频第一区二区三区免费观看网站| 亚洲另类第一页| 国产mv日韩mv欧美| 亚洲AV无码国产精品| 国产免费观看久久| 曰本女人与公拘交酡| 精品久久久久久久久久久久久| 在线永久看片免费的视频| 欧美日韩一区二区三区在线看 | 成人在线爆射| 国产中文日韩欧美| 欧美日韩一区二区三区四区不卡| 日本一区二区三区视频在线播放 | 国产性xxxx18免费观看视频| 日韩**一区毛片| 女王人厕视频2ⅴk| 91丨porny丨首页| 四季av中文字幕| 亚洲一区在线观看网站| 自拍偷拍18p| 日韩欧美国产成人一区二区| 日本一二三区在线视频| 久久亚洲国产精品成人av秋霞| 精品人人视频| 91精品中文在线| 免费一区二区三区视频导航| 992tv成人免费观看| 日韩在线一二三区| 久草视频福利在线| 国产精品免费网站在线观看| 亚洲国产成人精品激情在线| 欧美日韩国产精品成人| 婷婷综合激情网| 欧美成人亚洲成人日韩成人| 婷婷六月国产精品久久不卡| 懂色av一区二区三区在线播放| 国内精品久久久久久久影视简单 | 国产乱码字幕精品高清av | 国产69久久精品成人| 欧美一级网址| 日本免费高清一区| 精品91久久久久| 色婷婷激情视频| 欧美激情一区二区在线| 亚洲 欧美 日韩 综合| 91精品在线一区二区| 国产最新视频在线观看| 97在线视频国产| 国产精品香蕉| 日韩不卡视频一区二区| 六月婷婷色综合| 亚欧洲乱码视频| 精品久久久一区| 韩国av在线免费观看| 欧美成年人视频网站| 亚洲精品一区av| 亚洲欧美日本国产有色| 日日夜夜免费精品视频| 丰满少妇一区二区三区| 午夜一区二区三区在线观看| 精品人妻一区二区三区日产乱码| 少妇久久久久久| 成人av色网站| 欧美日韩国产免费一区二区三区 | 特种兵之深入敌后| 中文字幕在线观看一区二区| 特级西西444www大胆免费看| 亚洲美女黄色片| 成人美女大片| 欧美性天天影院| 亚洲欧美卡通另类91av| 免费a级黄色片| 欧美午夜美女看片| 日韩大片b站免费观看直播| 欧美一级电影久久| 美女网站一区| www日韩视频| 成人欧美一区二区三区白人| 国产一区二区三区成人| 伦理中文字幕亚洲| 999在线精品| 成人午夜视频在线观看免费| av一区二区三区四区| 男人午夜免费视频| 亚洲香蕉av在线一区二区三区| 成人精品国产亚洲| 日韩第一页在线观看| 国产高清视频一区| 日韩精品一区二区在线播放| 日韩www在线| 国模套图日韩精品一区二区| 五码日韩精品一区二区三区视频| 六月丁香婷婷色狠狠久久| 久久免费看少妇高潮v片特黄| 欧美成人r级一区二区三区| gogo久久| 日韩欧美视频一区二区| 九九国产精品视频| 免费中文字幕在线观看| 日韩高清免费观看| 搜成人激情视频| 干日本少妇视频| 99精品热视频| 97人妻精品视频一区| 欧美精品videos| 要久久电视剧全集免费| 91看片破解版| 午夜精品福利视频网站| 第九色区av在线| 91av免费看| 久久久久久夜| 丰满少妇高潮久久三区| 日韩精品在线观看一区| 欧洲亚洲精品久久久久| 亚洲第一页在线视频| 91在线视频免费观看| 一二三四区在线| 78色国产精品| 99精品综合| aaaaa级少妇高潮大片免费看| 欧美日韩精品欧美日韩精品| 爱福利在线视频| 一本一本久久a久久精品综合妖精| 成人免费va视频| 国产又粗又猛又爽又黄的| 8090成年在线看片午夜| 91精品1区| 在线国产视频一区| 337p日本欧洲亚洲大胆精品| 高清在线一区| 免费在线观看的av网站|