成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 詳解PHP多進(jìn)程消費(fèi)隊(duì)列

詳解PHP多進(jìn)程消費(fèi)隊(duì)列

熱門標(biāo)簽:合肥ai電銷機(jī)器人費(fèi)用 滄州電銷外呼系統(tǒng)價(jià)格 天津電銷外呼系統(tǒng)違法嗎 溫州外呼系統(tǒng)招商 400電話個(gè)人能不能辦理 手機(jī)外呼系統(tǒng)什么原理 凱立德地鐵站地圖標(biāo)注 上海400客服電話怎么申請 銀行信貸電話機(jī)器人

引言

最近開發(fā)一個(gè)小功能,用到了隊(duì)列mcq,啟動(dòng)一個(gè)進(jìn)程消費(fèi)隊(duì)列數(shù)據(jù),后邊發(fā)現(xiàn)一個(gè)進(jìn)程處理不過來了,又加了一個(gè)進(jìn)程,過了段時(shí)間又處理不過來了......

這種方式每次都要修改crontab,如果進(jìn)程掛掉了,不會(huì)及時(shí)的啟動(dòng),要等到下次crontab執(zhí)行的時(shí)候才會(huì)啟動(dòng)。關(guān)閉(重啟)進(jìn)程的時(shí)候用的是kill,這可能會(huì)丟失正在處理的數(shù)據(jù),比如下面這個(gè)例子,我們假設(shè)sleep過程就是處理邏輯,這里為了明顯看出效果,將處理時(shí)間放大到10s:

?php
$i = 1;
while (1) {
    echo "開始第[{$i}]次循環(huán)\n";
    sleep(10);
    echo "結(jié)束第[{$i}]次循環(huán)\n";
    $i++;
}

當(dāng)我們運(yùn)行腳本之后,等到循環(huán)開始之后,給進(jìn)程發(fā)送kill {$pid},默認(rèn)發(fā)送的是編號(hào)為15的SIGTERM信號(hào)。假設(shè)$i是從隊(duì)列拿到的,拿到2的時(shí)候,正在處理,我們給程序發(fā)送了kill信號(hào),和隊(duì)列數(shù)據(jù)丟失一樣,問題比較大,因此我要想辦法解決這些問題。

開始第[1]次循環(huán)

結(jié)束第[1]次循環(huán)

開始第[2]次循環(huán)

[1]    28372 terminated  php t.php

nginx進(jìn)程模型

這時(shí)候我想到了nginx,nginx作為高性能服務(wù)器的中流砥柱,為成千上萬的企業(yè)和個(gè)人服務(wù),他的進(jìn)程模型比較經(jīng)典,如下所示:

管理員通過master進(jìn)程和nginx進(jìn)行交互,從/path/to/nginx.pid讀取nginx master進(jìn)程的pid,發(fā)送信號(hào)給master進(jìn)程,master根據(jù)不同的信號(hào)做出不同的處理,然后反饋信息給管理員。worker是master進(jìn)程fork出來的,master負(fù)責(zé)管理worker,不會(huì)去處理業(yè)務(wù),worker才是具體業(yè)務(wù)的處理者,master可以控制worker的退出、啟動(dòng),當(dāng)worker意外退出,master會(huì)收到子進(jìn)程退出的消息,也會(huì)重新啟動(dòng)新的worker進(jìn)程補(bǔ)充上來,不讓業(yè)務(wù)處理受影響。nginx還可以平滑退出,不丟失任何一個(gè)正在處理的數(shù)據(jù),更新配置時(shí)nginx可以做到不影響線上服務(wù)來加載新的配置,這在請求量很大的時(shí)候特別有用。

進(jìn)程設(shè)計(jì)

看了nginx的進(jìn)模型,我們完全可以開發(fā)一個(gè)類似的類庫來滿足處理mcq數(shù)據(jù)的需求,做到單文件控制所有進(jìn)程、可以平滑退出、可以查看子進(jìn)程狀態(tài)。不需要太復(fù)雜,因?yàn)槲覀兲幚黻?duì)列數(shù)據(jù)接收一定的延遲,做到nginx那樣不間斷服務(wù)比較麻煩,費(fèi)時(shí)費(fèi)力,意義不是很大。設(shè)計(jì)的進(jìn)程模型跟nginx類似,更像是nginx的簡化版本。

進(jìn)程信號(hào)量設(shè)計(jì)

信號(hào)量是進(jìn)程間通訊的一種方式,比較簡單,單功能也比較弱,只能發(fā)送信號(hào)給進(jìn)程,進(jìn)程根據(jù)信號(hào)做出不同的處理。

master進(jìn)程啟動(dòng)的時(shí)候保存pid到文件/path/to/daeminze.pid,管理員通過信號(hào)和master進(jìn)程通訊,master進(jìn)程安裝3種信號(hào),碰到不同的信號(hào),做出不同的處理,如下所示:

SIGINT => 平滑退出,處理完正在處理的數(shù)據(jù)再退出

SIGTERM => 暴力退出,無論進(jìn)程是否正在處理數(shù)據(jù)直接退出

SIGUSR1 => 查看進(jìn)程狀態(tài),查看進(jìn)程占用內(nèi)存,運(yùn)行時(shí)間等信息

master進(jìn)程通過信號(hào)和worker進(jìn)程通訊,worker進(jìn)程安裝了2個(gè)信號(hào),如下所示:

SIGINT => 平滑退出

SIGUSR1 => 查看worker進(jìn)程自身狀態(tài)

為什么worker進(jìn)程只安裝2個(gè)信號(hào)呢,少了個(gè)SIGTERM,因?yàn)閙aster進(jìn)程收到信號(hào)SIGTERM之后,向worker進(jìn)程發(fā)送SIGKILL信號(hào),默認(rèn)強(qiáng)制關(guān)閉進(jìn)程即可。

worker進(jìn)程是通過master進(jìn)程fork出來的,這樣master進(jìn)程可以通過pcntl_wait來等待子進(jìn)程退出事件,當(dāng)有子進(jìn)程退出的時(shí)候返回子進(jìn)程pid,做處理并啟動(dòng)新的進(jìn)程補(bǔ)充上來。

master進(jìn)程也通過pcntl_wait來等待接收信號(hào),當(dāng)有信號(hào)到達(dá)的時(shí)候,會(huì)返回-1,這個(gè)地方還有些坑,在下文中會(huì)詳細(xì)講。

PHP中有2種信號(hào)觸發(fā)的方式,第一種方式是declare(ticks = 1);,這種效率不高,Zend每執(zhí)行一次低級(jí)語句,都會(huì)去檢查進(jìn)程中是否有未處理的信號(hào),現(xiàn)在已經(jīng)很少使用了,PHP 5.3.0及之前的版本可能會(huì)用到這個(gè)。

第二種是通過pcntl_signal_dispatch來調(diào)用未處理的信號(hào),PHP 5.4.0及之后的版本適用,可以巧妙的將該函數(shù)放在循環(huán)中,性能上基本沒什么損失,現(xiàn)在推薦適用。

PHP安裝修信號(hào)量

PHP通過pcntl_signal安裝信號(hào),函數(shù)聲明如下所示:

bool pcntl_signal ( int $signo , [callback $handler [, bool $restart_syscalls = true ] )

第三個(gè)參數(shù)restart_syscalls不太好理解,找了很多資料,也沒太查明白,經(jīng)過試驗(yàn)發(fā)現(xiàn),這個(gè)參數(shù)對pcntl_wait函數(shù)接收信號(hào)有影響,當(dāng)設(shè)置為缺省值true的時(shí)候,發(fā)送信號(hào),進(jìn)程用pcntl_wait收不到,必須設(shè)置為false才可以,看看下面這個(gè)例子:

?php
$i = 0;
while ($i5) {
    $pid = pcntl_fork();
    $random = rand(10, 50);
    if ($pid == 0) {
        sleep($random);
        exit();
    }
    echo "child {$pid} sleep {$random}\n";
    $i++;
}

pcntl_signal(SIGINT,  function($signo) {
     echo "Ctrl + C\n";
});

while (1) {
    $pid = pcntl_wait($status);
    var_dump($pid);
    pcntl_signal_dispatch();
}

運(yùn)行之后,我們對父進(jìn)程發(fā)送kill -SIGINT {$pid}信號(hào),發(fā)現(xiàn)pcntl_wait沒有反應(yīng),等到有子進(jìn)程退出的時(shí)候,發(fā)送過的SIGINT會(huì)一個(gè)個(gè)執(zhí)行,比如下面結(jié)果:

child 29643 sleep 48

child 29644 sleep 24

child 29645 sleep 37

child 29646 sleep 20

child 29647 sleep 31

int(29643)

Ctrl + C

Ctrl + C

Ctrl + C

Ctrl + C

int(29646)

這是運(yùn)行腳本之后馬上給父進(jìn)程發(fā)送了四次SIGINT信號(hào),等到一個(gè)子進(jìn)程推出的時(shí)候,所有信號(hào)都會(huì)觸發(fā)。

但當(dāng)把安裝信號(hào)的第三個(gè)參數(shù)設(shè)置為false:

pcntl_signal(SIGINT,  function($signo) {
     echo "Ctrl + C\n";
}, false);

這時(shí)候給父進(jìn)程發(fā)送SIGINT信號(hào),pcntl_wait會(huì)馬上返回-1,信號(hào)對應(yīng)的事件也會(huì)觸發(fā)。

所以第三個(gè)參數(shù)大概意思就是,是否重新注冊此信號(hào),如果為false只注冊一次,觸發(fā)之后就返回,pcntl_wait就能收到消息,如果為true,會(huì)重復(fù)注冊,不會(huì)返回,pcntl_wait收不到消息。

信號(hào)量和系統(tǒng)調(diào)用

信號(hào)量會(huì)打斷系統(tǒng)調(diào)用,讓系統(tǒng)調(diào)用立刻返回,比如sleep,當(dāng)進(jìn)程正在sleep的時(shí)候,收到信號(hào),sleep會(huì)馬上返回剩余sleep秒數(shù),比如:

?php
pcntl_signal(SIGINT,  function($signo) {
     echo "Ctrl + C\n";
}, false);

while (true) {
	pcntl_signal_dispatch();
    echo "123\n";
    $limit = sleep(2);
	echo "limit sleep [{$limit}] s\n";
}

運(yùn)行之后,按Ctrl + C,結(jié)果如下所示:

123

^Climit sleep [1] s

Ctrl + C

123

limit sleep [0] s

123

^Climit sleep [1] s

Ctrl + C

123

^Climit sleep [2] s

daemon(守護(hù))進(jìn)程

這種進(jìn)程一般設(shè)計(jì)為daemon進(jìn)程,不受終端控制,不與終端交互,長時(shí)間運(yùn)行在后臺(tái),而對于一個(gè)進(jìn)程,我們可以通過下面幾個(gè)步驟把他升級(jí)為一個(gè)標(biāo)準(zhǔn)的daemon進(jìn)程:

protected function daemonize()
{
    $pid = pcntl_fork();
    if (-1 == $pid) {
        throw new Exception("fork進(jìn)程失敗");
    } elseif ($pid != 0) {
        exit(0);
    }
    if (-1 == posix_setsid()) {
        throw new Exception("新建立session會(huì)話失敗");
    }

    $pid = pcntl_fork();
    if (-1 == $pid) {
        throw new Exception("fork進(jìn)程失敗");
    } else if($pid != 0) {
        exit(0);
    }

    umask(0);
    chdir("/");
}

攏共分五步:

1.fork子進(jìn)程,父進(jìn)程退出。

2.設(shè)置子進(jìn)程為會(huì)話組長,進(jìn)程組長。

3.再次fork,父進(jìn)程退出,子進(jìn)程繼續(xù)運(yùn)行。

4.恢復(fù)文件掩碼為0。

5.切換當(dāng)前目錄到根目錄/。

第2步是為第1步做準(zhǔn)備,設(shè)置進(jìn)程為會(huì)話組長,必要條件是進(jìn)程非進(jìn)程組長,因此做第一次fork,進(jìn)程組長(父進(jìn)程)退出,子進(jìn)程通過posix_setsid()設(shè)置為會(huì)話組長,同時(shí)也為進(jìn)程組長。

第3步是為了不讓進(jìn)程重新控制終端,因?yàn)橐粋€(gè)進(jìn)程控制一個(gè)終端的必要條件是會(huì)話組長(pid=sid)。

第4步是為了恢復(fù)默認(rèn)的文件掩碼,避免之前做的操作對文件掩碼做了設(shè)置,帶來不必要的麻煩。關(guān)于文件掩碼, linux中,文件掩碼在創(chuàng)建文件、文件夾的時(shí)候會(huì)用到,文件的默認(rèn)權(quán)限為666,文件夾為777,創(chuàng)建文件(夾)的時(shí)候會(huì)用默認(rèn)值減去掩碼的值作為創(chuàng)建文件(夾)的最終值,比如掩碼022下創(chuàng)建文件666 - 222 = 644,創(chuàng)建文件夾777 - 022 = 755:

掩碼 新建文件權(quán)限 新建文件夾權(quán)限
umask(0) 666 (-rw-rw-rw-) 777 (drwxrwxrwx)
umask(022) 644 (-rw-r--r--) 755 (drwxr-xr-x)

第5步是切換了當(dāng)前目錄到根目錄/,網(wǎng)上說避免起始運(yùn)行他的目錄不能被正確卸載,這個(gè)不是太了解。

對應(yīng)5步,每一步的各種id變化信息:

操作后 pid ppid pgid sid
開始 17723 31381 17723 31381
第一次fork 17723 1 17723 31381
posix_setsid() 17740 1 17740 17740
第二次fork 17840 1 17740 17740

另外,會(huì)話、進(jìn)程組、進(jìn)程的關(guān)系如下圖所示,這張圖有助于更好的理解。

至此,你也可以輕松地造出一個(gè)daemon進(jìn)程了。

命令設(shè)計(jì)

我準(zhǔn)備給這個(gè)類庫設(shè)計(jì)6個(gè)命令,如下所示:

1.start 啟動(dòng)命令

2.restart 強(qiáng)制重啟

3.stop 平滑停止

4.reload 平滑重啟

5.quit 強(qiáng)制停止

6.status 查看進(jìn)程狀態(tài)

啟動(dòng)命令

啟動(dòng)命令就是默認(rèn)的流程,按照默認(rèn)流程走就是啟動(dòng)命令,啟動(dòng)命令會(huì)檢測pid文件中是否已經(jīng)有pid,pid對應(yīng)的進(jìn)程是否健康,是否需要重新啟動(dòng)。

強(qiáng)制停止命令

管理員通過入口文件結(jié)合pid給master進(jìn)程發(fā)送SIGTERM信號(hào),master進(jìn)程給所有子進(jìn)程發(fā)送SIGKILL信號(hào),等待所有worker進(jìn)程退出后,master進(jìn)程也退出。

強(qiáng)制重啟命令

強(qiáng)制停止命令+啟動(dòng)命令

平滑停止命令

平滑停止命令,管理員給master進(jìn)程發(fā)送SIGINT信號(hào),master進(jìn)程給所有子進(jìn)程發(fā)送SIGINT,worker進(jìn)程將自身狀態(tài)標(biāo)記為stoping,當(dāng)worker進(jìn)程下次循環(huán)的時(shí)候會(huì)根據(jù)stoping決定停止,不在接收新的數(shù)據(jù),等所有worker進(jìn)程退出之后,master進(jìn)程也退出。

平滑重啟命令

平滑停止命令+啟動(dòng)命令

查看進(jìn)程狀態(tài)

查看進(jìn)程狀態(tài)這個(gè)借鑒了workerman的思路,管理員給master進(jìn)程發(fā)送SIGUSR1信號(hào),告訴主進(jìn)程,我要看所有進(jìn)程的信息,master進(jìn)程,master進(jìn)程將自身的進(jìn)程信息寫入配置好的文件路徑A中,然后發(fā)送SIGUSR1,告訴worker進(jìn)程把自己的信息也寫入文件A中,由于這個(gè)過程是異步的,不知道worker進(jìn)程啥時(shí)候?qū)懲?,所以master進(jìn)程在此處等待,等所有worker進(jìn)程都寫入文件之后,格式化所有的信息輸出,最后輸出的內(nèi)容如下所示:

➜/dir /usr/local/bin/php DaemonMcn.php status

Daemon [DaemonMcn] 信息:

-------------------------------- master進(jìn)程狀態(tài) --------------------------------

pid       占用內(nèi)存       處理次數(shù)       開始時(shí)間                 運(yùn)行時(shí)間

16343     0.75M          --             2018-05-15 09:42:45      0 天 0 時(shí) 3 分

12 slaver

-------------------------------- slaver進(jìn)程狀態(tài) --------------------------------

任務(wù)task-mcq:

16345     0.75M          236            2018-05-15 09:42:45      0 天 0 時(shí) 3 分

16346     0.75M          236            2018-05-15 09:42:45      0 天 0 時(shí) 3 分

--------------------------------------------------------------------------------

任務(wù)test-mcq:

16348     0.75M          49             2018-05-15 09:42:45      0 天 0 時(shí) 3 分

16350     0.75M          49             2018-05-15 09:42:45      0 天 0 時(shí) 3 分

16358     0.75M          49             2018-05-15 09:42:45      0 天 0 時(shí) 3 分

16449     0.75M          1              2018-05-15 09:46:40      0 天 0 時(shí) 0 分

--------------------------------------------------------------------------------

等待worker進(jìn)程將進(jìn)程信息寫入文件的時(shí)候,這個(gè)地方用了個(gè)比較trick的方法,每個(gè)worker進(jìn)程輸出一行信息,統(tǒng)計(jì)文件的行數(shù),達(dá)到worker進(jìn)程的行數(shù)之后表示所有worker進(jìn)程都將信息寫入完畢,否則,每個(gè)1s檢測一次。

以上就是詳解PHP多進(jìn)程消費(fèi)隊(duì)列的詳細(xì)內(nèi)容,更多關(guān)于PHP多進(jìn)程消費(fèi)隊(duì)列的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • php多進(jìn)程中的阻塞與非阻塞操作實(shí)例分析
  • php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程的方法分析
  • php 的多進(jìn)程操作實(shí)踐案例分析
  • php 多進(jìn)程編程父進(jìn)程的阻塞與非阻塞實(shí)例分析
  • php實(shí)現(xiàn)的簡單多進(jìn)程服務(wù)器類完整示例
  • PHP多進(jìn)程簡單實(shí)例小結(jié)
  • PHP 多進(jìn)程與信號(hào)中斷實(shí)現(xiàn)多任務(wù)常駐內(nèi)存管理實(shí)例方法
  • php swoole多進(jìn)程/多線程用法示例【基于php7nts版】
  • PHP基于swoole多進(jìn)程操作示例

標(biāo)簽:酒泉 白城 金華 赤峰 溫州 怒江 洛陽 七臺(tái)河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解PHP多進(jìn)程消費(fèi)隊(duì)列》,本文關(guān)鍵詞  詳解,PHP,多,進(jìn)程,消費(fèi),隊(duì)列,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解PHP多進(jìn)程消費(fèi)隊(duì)列》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解PHP多進(jìn)程消費(fèi)隊(duì)列的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章

    上一篇:詳解PHP解決守護(hù)進(jìn)程Redis假死

    下一篇:Fatal error: 'break' not in the 'loop' or 'switch' context in Function.php

    在线欧美亚洲| 日本不卡免费一区| 国产精品综合在线| 日韩精品免费在线| 亚洲精品午夜久久久| 久久久久久久性| 欧美1区二区三区公司| 成人av一级片| 国产综合久久久久久鬼色| 国产欧美一区二区三区网站| 精品三级av在线| 菠萝蜜视频在线观看www入口| 在线观看中文字幕亚洲| 日韩精品一区二区三区四| 国产日产精品一区二区三区| 亚洲国产欧美日韩精品| 精品视频中文字幕| 亚洲免费av一区二区三区| 国产又粗又猛又爽又黄91精品| 精品国产无码AV| 国产农村妇女毛片精品久久麻豆| 美女xx视频| 国产乱码一区| 国产a√精品区二区三区四区| 亚洲图片欧美激情| 四虎4hu影库永久地址| 成人性生交大片免费看中文| 亚洲三级电影全部在线观看高清| 久久爱www久久做| 国产日韩欧美一区| 国产精品第12页| 亚洲aⅴ怡春院| 国产又色又爽又黄的| 欧美人成在线观看网站高清| 亚洲高清久久| 制服诱惑亚洲| 在线观看美女网站大全免费| 91黄色在线看| 成人高潮成人免费观看| 亚洲最大最好的私人影剧院| 野花社区视频在线观看| 亚洲综合成人网| 日产精品久久久一区二区| 久久亚洲精品中文字幕蜜潮电影| 蜜桃传媒一区二区三区| 狠狠操五月天| 日本高清视频一区二区三区| 美女视频第一区二区三区免费观看网站| 99精品99久久久久久宅男| 国产精品日韩在线播放| 欧美日韩午夜剧场| 国产伦精品一区二区三区视频青涩| 人人澡人人透人人爽| 夜夜操天天操亚洲| www天堂在线观看| 日韩精品福利视频| 黑人巨大精品欧美黑白配亚洲| 亚洲第一免费网站| 中文字幕欧美三区| 久久精品三级视频| 91精品国自产在线偷拍蜜桃| 亚洲精品乱码久久久久久久久| 欧洲不卡视频| 天堂在线免费av| 日韩欧美在线免费观看视频| 乳奴隷乳フ辱julia在线观看| 亚洲高清激情| 欧美另类videos粗暴黑人| 欧美日韩亚洲一区二区三区在线| 久久精品国语| 福利视频午夜| 欧美丰满少妇xxxx| 在线一区av| 国产极品美女在线| 欧美jizzhd欧美精品巨大| 精品国产一区二区三区久久影院| 国产精品久久久久久久久久久久午夜片| 欧美高清在线观看| 久久高清无码视频| 欧美性受xxxx| 很黄很a的视频| 久艹视频在线免费观看| 精品人伦一区二区| 亚洲性感美女99在线| 日本一区不卡| 国产精品免费网站在线观看| 欧美a级片免费看| 亚洲男人的天堂在线播放| 成人av免费电影| 大桥未久av一区二区三区中文| 日韩精品在线私人| 日韩电影免费观看高清完整版在线观看| 一区二区高清不卡| 国产成人在线电影| 首播影院在线观看免费观看电视| 91成人小视频| 国模吧精品视频| 国产高潮视频在线观看| 亚洲综合电影| 国产一区二区三区在线免费| 中文字幕在线成人| 四虎国产精品永远| 日本 国产 欧美色综合| 日韩视频在线观看国产| 成人网ww555视频免费看| 日韩字幕在线观看| 一个色免费成人影院| 亚洲在线日韩| 日韩久久综合| 欧美性一级生活| 久久久久久久久久久妇女| 色婷婷精品大视频在线蜜桃视频| 欧美日韩一区小说| 久久国产露脸精品国产| 久久麻豆一区二区| 中国日韩欧美久久久久久久久| 久久国产视频网站| 国产福利视频在线播放| 亚洲一区二区欧美| 亚洲自拍偷拍色片视频| 色综合欧美在线| 午夜性色福利视频| 欧美性大战久久久久xxx| 91综合精品国产丝袜长腿久久| 99热在线观看| 影音先锋人妻啪啪av资源网站| 午夜免费激情视频| 欧美第一黄网免费网站| 久青草视频在线观看| 97超碰人人澡| 可以看污的网站| 免费黄视频在线观看| 免费观看亚洲视频大全| 亚洲精品中文字幕在线| 日韩成人综合| 成人做爰免费视频免费看| 天天射天天爱天天射干| 日本成人精品视频| 国产精品免费一区二区三区观看| 午夜精品福利视频网站| 精品人妻一区二区三区浪潮在线| 久久精品国产久精国产思思| 91精品国产电影| 波多野结衣中文字幕在线播放| 欧美一级免费看| 中文字幕av播放| 久草综合在线视频| 一区二区中文字幕在线| av网站导航在线观看免费| 国产精品免费无遮挡| 日韩欧美国产wwwww| 国产一区二区三区在线视频| 国产精品一区二区x88av| 91精品一区二区三区综合在线爱| 国精产品一区一区三区mba下载| 黄页免费在线观看| 四虎影视18库在线影院| 久久免费观看视频| 日韩在线一区二区| 日韩欧美99| 久久色中文字幕| 韩国三级av在线免费观看| 97在线观看免费高清视频| 三级黄色在线视频| 日本高清视频在线播放| 野外性满足hd| 九九热最新视频//这里只有精品| 一本到高清视频免费精品| 天天综合在线视频| 日韩亚洲欧美在线| 国内揄拍国内精品少妇国语| 伦理电影国产精品| 人人妻人人澡人人爽欧美一区双| 日韩亚洲欧美高清| 国产精品入口麻豆免费观看| 天天干天天曰天天操| 日韩欧美中文字幕一区| 3d成人动漫在线| 久久精品毛片| 欧美家庭影院| 99自拍偷拍视频| 亚洲精品xxxx| 亚洲精品蜜桃乱晃| 一区二区三区加勒比av| 青青草91久久久久久久久| 欧美日韩高清| 午夜视频1000| 一区二区三区在线视频看| 中文字幕欧美日韩va免费视频| 国产视频不卡一区| 欧美激情另类| 大胆人体色综合| 亚洲一线二线三线久久久| 亚洲激情文学| 午夜不卡一区| 欧美男同性恋视频网站| 五月天亚洲综合小说网| 青青草在线观看视频| 日本性爱视频在线观看| 在线观看男女av免费网址| 337p亚洲精品色噜噜狠狠p| 亚洲国产精品久久久久久6q| 麻豆资源在线| 91精品国产99久久久久久红楼| 日韩精品一页| 香蕉视频一区二区三区| 欧美福利网站| 精品久久久久中文慕人妻| 国产精品色视频| 自慰无码一区二区三区| 久久www免费人成看片高清| 欧美日韩亚洲国产一区| 欧美在线观看一区二区三区| 爆乳熟妇一区二区三区霸乳| 91成人国产综合久久精品| 天天干天天综合| 国产视频911| 日韩一卡二卡三卡四卡| 久久国产一区二区三区| 欧美激情福利| 国产香蕉视频在线看| 国产亚洲视频一区| 欧美日韩一区二区在线观看| 日韩精品高清在线观看| 亚洲在线精品视频| 精品无码在线观看| 男女男精品视频网站| 日本一区二区三区在线视频| 欧美性色黄在线视频| 色偷偷色偷偷色偷偷在线视频| 91精品国产综合久久香蕉| 91三级在线| 欧美性受xxxx免费视频| 亚洲福利一区二区三区| 中文字幕免费在线观看| 国产视频中文字幕在线观看| 先锋av影院| 人妻少妇一区二区三区| 第九色区aⅴ天堂久久香| 免费在线观看一级片| 欧美成人首页| 国产在线一卡二卡| 亚洲激情免费观看| 欧美视频你懂的| 韩国三级日本三级少妇99| 国产在线精品二区| 极品视频在线| 青青草观看免费视频在线| 亚洲日本一区二区三区| 热99精品只有里视频精品| 成人影视免费观看| 9l视频自拍蝌蚪9l视频成人| 超碰97国产在线| 在线免费观看日本欧美爱情大片| 欧美一级片免费在线观看| 国产精品尤物视频| 国产高清视频免费最新在线| 色国产综合视频| 久久精品99久久久| 国产成人免费观看网站| 日本欧美在线看| 九九色在线观看| 亚洲欧美日本一区| 国产精品亚洲电影久久成人影院| 国产吞精囗交久久久| 潘金莲一级淫片aaaaa| 亚洲 激情 在线| 欧美精品久久久久久久久46p| 久久久精品综合| 91香蕉视频污在线观看| 欧美视频一区二区| 午夜精品视频一区二区三区在线看| 69堂成人精品免费视频| 午夜欧美一区二区三区在线播放| 久久久久这里只有精品| 亚洲精品成人无限看| 日本少妇xxxx软件| av不卡在线| 日韩精品一区二区三区swag| 久久人妻少妇嫩草av无码专区| 国内成人精品| 亚洲动漫精品| 欧美涩涩网站| 国产精品99久久精品| 4hu最新网址| 国产精品一区在线观看| 成人妇女免费播放久久久| 加勒比成人在线| 911国产网站尤物在线观看| 久久理论片午夜琪琪电影网| 一女二男一黄一片| 欧美日韩国产综合视频在线观看| 亚洲欧美另类视频| 亚洲午夜久久久久久尤物| 一级做a爱视频| 久久久久99精品| 国语对白一区二区| 欧美久久综合性欧美| 欧美日韩激情一区二区三区| 亚洲va久久久噜噜噜久久| 国产黄色片大全| 一级视频在线观看视频在线啦啦| 国产成人黄色av| 国产一区日韩二区欧美三区| 亚洲xxxx2d动漫1| 久久国产精品色| 欧美作爱福利免费观看视频| 麻豆成人久久精品二区三区小说| 成人中文字幕合集| 日韩一区二区三区国产| 亚洲新声在线观看| 亚洲国产日韩a在线播放性色| 国产精品天天看天天狠| 懂色av一区二区在线播放| 性欧美hd调教| 伊人网在线视频观看| 亚洲一级片在线观看| 无码少妇一区二区三区| 乱亲女h秽乱长久久久| 日本欧美中文字幕| 国产精品视频久久久久久久| 午夜精品久久久久久久| 香港一级纯黄大片| 99re6在线视频精品免费| 久久久久久国产精品无码| 最新中文字幕久久| 国产精品第12页| 日韩中文字幕二区|