亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > PHP > 正文

PHP多進(jìn)程編程實(shí)例

2020-03-22 20:23:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
羨慕火影忍者里鳴人的影分身么?沒(méi)錯(cuò),PHP程序是可以開動(dòng)影分身的!想完成任務(wù),又覺(jué)得一個(gè)進(jìn)程太慢,那么,試試用多進(jìn)程來(lái)搞吧。這篇文章將會(huì)介紹一下PHP多進(jìn)程的基本需求,如何創(chuàng)建多進(jìn)程以及基本的信號(hào)控制,暫時(shí)不會(huì)告訴你如何進(jìn)行進(jìn)程間通信和信息共享。1. 準(zhǔn)備在動(dòng)手之前,請(qǐng)確定你用的不是M$ Windows平臺(tái)(因?yàn)槲覜](méi)有Windows)。Linux / BSD / Unix應(yīng)該都是沒(méi)問(wèn)題的。確認(rèn)好了工作環(huán)境以后一起來(lái)看看我們需要的PHP模塊是否都有。打開終端輸入下面的命令:復(fù)制代碼 代碼如下:
$ php -m
這個(gè)命令檢查并打印當(dāng)前PHP所有開啟的擴(kuò)展,看一下pcntl和posix是否在輸出的列表中。1.1. pcntl如果找不到pcntl,八成是編譯的時(shí)候沒(méi)把這個(gè)擴(kuò)展編譯進(jìn)去。如果你和我一樣是編譯安裝的PHP,那么需要重新編譯安裝PHP。在配置的時(shí)候記得加上--enable-pcntl參數(shù)即可。復(fù)制代碼 代碼如下:
$ cd /path/to/php_source_code_dir
$ ./configure [some other options] --enable-pcntl
$ make && make install
1.2. posix這貨一般默認(rèn)就會(huì)裝上,只要你編譯的時(shí)候沒(méi)有加上--disable-posix。2. 預(yù)備知識(shí)在繼續(xù)之前,你還需要對(duì)Linux多進(jìn)程有一點(diǎn)了解。多進(jìn)程是咋回事呢?這里可跟火影忍者里的影分身稍微有點(diǎn)不同。首先,鳴人從小長(zhǎng)到大,比如16歲,咳。有一天他發(fā)動(dòng)了影分身,分出了5個(gè)他。顯然,這些分身也是16歲的鳴人而不是剛出生啥也不懂就會(huì)哭的嬰兒(那叫克?。?。然后,不一樣的地方來(lái)了:分身們變成了獨(dú)立的人各自去做各自的事,互相之間不再知道其他分身和原身都做了什么(當(dāng)然不會(huì)像動(dòng)畫片里一樣積累經(jīng)驗(yàn)給原身啦)。除非,他們互相之間有交流,不然,只有16歲之前的事情才是他們共同的記憶。有同學(xué)說(shuō)了,老大你這不坑爹呢么?我又沒(méi)看過(guò)火影忍者!那你去看一遍好了……最后,預(yù)備知識(shí)完了,就是大致了解一下主進(jìn)程開出來(lái)的子進(jìn)程是怎么回事。子進(jìn)程的代碼和主進(jìn)程是完全一樣的,還有一部分一樣的東西就是直到發(fā)動(dòng)影分身之前執(zhí)行的所有內(nèi)容。3. 影分身之術(shù)所以呢,沒(méi)有點(diǎn)基礎(chǔ)知識(shí)怎么能理解卷軸里的內(nèi)容呢?打開卷軸首先看到了一個(gè)單詞:fork。3.1. fork叉子?叉子是分岔的,一個(gè)變多個(gè)嘛!差不多就是這個(gè)意思。創(chuàng)建子進(jìn)程就用這個(gè)命令。這里需要用到pcntl_fork()函數(shù)。(可以先簡(jiǎn)單看一下PHP手冊(cè)關(guān)于這個(gè)函數(shù)的介紹。)創(chuàng)建一個(gè)PHP腳本:
復(fù)制代碼 代碼如下:
$pid = pcntl_fork(); // 一旦調(diào)用成功,事情就變得有些不同了
if ($pid == -1) {
die('fork failed');
} else if ($pid == 0) {
} else {
}
pcntl_fork()函數(shù)創(chuàng)建一個(gè)子進(jìn)程,子進(jìn)程和父進(jìn)程唯一的區(qū)別就是PID(進(jìn)程ID)和PPID(父進(jìn)程ID)不同。在終端下查看進(jìn)程用ps命令(問(wèn)問(wèn)man看ps怎么用:man ps)。當(dāng)函數(shù)返回值為-1的時(shí)候,說(shuō)明fork失敗了。試試在if前面加一句:echo $pid . PHP_EOL;。運(yùn)行你的腳本,輸出可能像下面這樣(結(jié)果說(shuō)明子進(jìn)程和父進(jìn)程的代碼是相同的):
復(fù)制代碼 代碼如下:
67789 # 這個(gè)是父進(jìn)程打印的
0 # 這個(gè)是子進(jìn)程打印的
pcntl_fork()函數(shù)調(diào)用成功后,在父進(jìn)程中會(huì)返回子進(jìn)程的PID,而在子進(jìn)程中返回的是0。所以,下面直接用if分支來(lái)控制父進(jìn)程和子進(jìn)程做不同的事。3.2. 分配任務(wù)然后我們來(lái)說(shuō)說(shuō)鳴人16歲那次影分身的事兒,給原身和分身分配兩個(gè)簡(jiǎn)單的輸出任務(wù):
復(fù)制代碼 代碼如下:
$parentPid = getmypid(); // 這就是傳說(shuō)中16歲之前的記憶
$pid = pcntl_fork(); // 一旦調(diào)用成功,事情就變得有些不同了
if ($pid == -1) {
die('fork failed');
} else if ($pid == 0) {
$mypid = getmypid(); // 用getmypid()函數(shù)獲取當(dāng)前進(jìn)程的PID
echo 'I am child process. My PID is ' . $mypid . ' and my father's PID is ' . $parentPid . PHP_EOL;
} else {
echo 'Oh my god! I am a father now! My child's PID is ' . $pid . ' and mine is ' . $parentPid . PHP_EOL;
}
輸出的結(jié)果可能是這樣:
復(fù)制代碼 代碼如下:
Oh my god! I am a father now! My child's PID is 68066 and mine is 68065
I am child process. My PID is 68066 and my father's PID is 68065
再?gòu)?qiáng)調(diào)一下,pcntl_fork()調(diào)用成功以后,一個(gè)程序變成了兩個(gè)程序:一個(gè)程序得到的$pid變量值是0,它是子進(jìn)程;另一個(gè)程序得到的$pid的值大于0,這個(gè)值是子進(jìn)程的PID,它是父進(jìn)程。在下面的分支語(yǔ)句中,由于$pid值的不同,運(yùn)行了不同的代碼。再次強(qiáng)調(diào)一下:子進(jìn)程的代碼和父進(jìn)程的是一樣的。所以就要通過(guò)分支語(yǔ)句給他們分配不同的任務(wù)。3.3. 子進(jìn)程回收剛剛有man ps么?一般我習(xí)慣用ps aux加上grep命令來(lái)查找運(yùn)行著的后臺(tái)進(jìn)程。其中有一列STAT,標(biāo)識(shí)了每個(gè)進(jìn)程的運(yùn)行狀態(tài)。這里,我們關(guān)注狀態(tài)Z:僵尸(Zombie)。當(dāng)子進(jìn)程比父進(jìn)程先退出,而父進(jìn)程沒(méi)對(duì)其做任何處理的時(shí)候,子進(jìn)程將會(huì)變成僵尸進(jìn)程。Oops,又跟火影里的影分身不一樣了。鳴人的影分身被干死了以后就自動(dòng)消失了,但是這里的子進(jìn)程分身死了話還留著一個(gè)空殼在,直到父進(jìn)程回收它。僵尸進(jìn)程雖然不占什么內(nèi)存,但是很礙眼,院子里一堆躺著的僵尸怎么都覺(jué)得怪怪的。(別忘了它們還占用著PID)一般來(lái)說(shuō),在父進(jìn)程結(jié)束之前回收掛掉的子進(jìn)程就可以了。在pcntl擴(kuò)展里面有一個(gè)pcntl_wait()函數(shù),它會(huì)將父進(jìn)程掛起,直到有一個(gè)子進(jìn)程退出為止。如果有一個(gè)子進(jìn)程變成了僵尸的話,它會(huì)立即返回。所有的子進(jìn)程都要回收,所以多等等也沒(méi)關(guān)系啦!3.4. 父進(jìn)程先掛了如果父進(jìn)程先掛了怎么辦?會(huì)發(fā)生什么?什么也不會(huì)發(fā)生,子進(jìn)程依舊還在運(yùn)行。但是這個(gè)時(shí)候,子進(jìn)程會(huì)被交給1號(hào)進(jìn)程,1號(hào)進(jìn)程成為了這些子進(jìn)程的繼父。1號(hào)進(jìn)程會(huì)很好地處理這些進(jìn)程的資源,當(dāng)它們結(jié)束時(shí)1號(hào)進(jìn)程會(huì)自動(dòng)回收資源。所以,另一種處理僵尸進(jìn)程的臨時(shí)辦法是關(guān)閉它們的父進(jìn)程。4. 信號(hào)一般多進(jìn)程的事兒講到上面就完了,可是信號(hào)在系統(tǒng)中確實(shí)是一個(gè)非常重要的東西。信號(hào)就是信號(hào)燈,點(diǎn)亮一個(gè)信號(hào)燈,程序就會(huì)做出反應(yīng)。這個(gè)你一定用過(guò),比如說(shuō)在終端下運(yùn)行某個(gè)程序,等了半天也沒(méi)什么反應(yīng),可能你會(huì)按 Ctrl+C 來(lái)關(guān)閉這個(gè)程序。實(shí)際上,這里就是通過(guò)鍵盤向程序發(fā)送了一個(gè)中斷的信號(hào):SIGINT。有時(shí)候進(jìn)程失去響應(yīng)了還會(huì)執(zhí)行kill [PID]命令,未加任何其他參數(shù)的話,程序會(huì)接收到一個(gè)SIGTERM信號(hào)。程序收到上面兩個(gè)信號(hào)的時(shí)候,默認(rèn)都會(huì)結(jié)束執(zhí)行,那么是否有可能改變這種默認(rèn)行為呢?必須能??!4.1. 注冊(cè)信號(hào)人是活的程序也是活的,只不過(guò)程序需要遵循人制定的規(guī)則來(lái)運(yùn)行?,F(xiàn)在開始給信號(hào)重新設(shè)定規(guī)則,這里用到的函數(shù)是pcntl_signal()(繼續(xù)之前為啥不先查查PHP手冊(cè)呢?)。下面這段程序?qū)⒔oSIGINT重新定義行為,注意看好:
復(fù)制代碼 代碼如下:
// 定義一個(gè)處理器,接收到SIGINT信號(hào)后只輸出一行信息
function signalHandler($signal) {
if ($signal == SIGINT) {
echo 'signal received' . PHP_EOL;
}
}
// 信號(hào)注冊(cè):當(dāng)接收到SIGINT信號(hào)時(shí),調(diào)用signalHandler()函數(shù)
pcntl_signal(SIGINT, 'signalHandler');
while (true) {
sleep(1);
// do something
pcntl_signal_dispatch(); // 接收到信號(hào)時(shí),調(diào)用注冊(cè)的signalHandler()
}
執(zhí)行一下,隨時(shí)按下 Ctrl+C 看看會(huì)發(fā)生什么事。4.2. 信號(hào)分發(fā)說(shuō)明一下:pcntl_signal()函數(shù)僅僅是注冊(cè)信號(hào)和它的處理方法,真正接收到信號(hào)并調(diào)用其處理方法的是pcntl_signal_dispatch()函數(shù)。試試把// do something替換成下面這段代碼:
復(fù)制代碼 代碼如下:
for ($i = 0; $i 1000000; $i++) {
echo $i . PHP_EOL;
usleep(100000);
}
在終端下執(zhí)行這個(gè)腳本,當(dāng)它不停輸出數(shù)字的時(shí)候嘗試按下 Ctrl+C ??纯闯绦蛴惺裁错憫?yīng)?嗯……什么都沒(méi)有,除了屏幕可能多了個(gè)^C以外,程序一直在不停地輸出數(shù)字。因?yàn)槌绦蛞恢睕](méi)有執(zhí)行到pcntl_signal_dispatch(),所以就并沒(méi)有調(diào)用signalHandler(),所以就沒(méi)有輸出signal received。4.3. 版本問(wèn)題如果認(rèn)真看了PHP文檔,會(huì)發(fā)現(xiàn)pcntl_signal_dispatch()這個(gè)函數(shù)是PHP 5.3以上才支持的,如果你的PHP版本大于5.3,建議使用這個(gè)方法調(diào)用信號(hào)處理器。5.3以下的版本需要在注冊(cè)信號(hào)之前加一句:declare(ticks = 1);表示每執(zhí)行一條低級(jí)指令,就檢查一次信號(hào),如果檢測(cè)到注冊(cè)的信號(hào),就調(diào)用其信號(hào)處理器。想想就挺不爽的,干嘛一直都檢查?還是在我們指定的地方檢查一下就好。4.4. 感受僵尸進(jìn)程現(xiàn)在我們回到子進(jìn)程回收的問(wèn)題上(差點(diǎn)忘了= =")。當(dāng)你的一個(gè)子進(jìn)程掛了(或者說(shuō)是結(jié)束了),但是父進(jìn)程還在運(yùn)行中并且可能很長(zhǎng)一段時(shí)間不會(huì)退出。一個(gè)僵尸進(jìn)程從此站起來(lái)了!這時(shí),保護(hù)傘公司(內(nèi)核)發(fā)現(xiàn)它的地盤里出現(xiàn)了一個(gè)僵尸,這個(gè)僵尸是誰(shuí)兒子呢?看一下PPID就知道了。然后,內(nèi)核給PPID這個(gè)進(jìn)程(也就是僵尸進(jìn)程的父進(jìn)程)發(fā)送一個(gè)信號(hào):SIGCHLD。然后,你知道怎么在父進(jìn)程中回收這個(gè)子進(jìn)程了么?提示一下,用pcntl_wait()函數(shù)。4.5. 發(fā)送信號(hào)希望剛剛有認(rèn)真man過(guò)kill命令。它其實(shí)就是向進(jìn)程發(fā)送信號(hào),在PHP中也可以調(diào)用posix_kill()函數(shù)來(lái)達(dá)到相同的效果。有了它就可以在父進(jìn)程中控制其他子進(jìn)程的運(yùn)行了。比如在父進(jìn)程結(jié)束之前關(guān)閉所有子進(jìn)程,那么fork的時(shí)候在父進(jìn)程記錄所有子進(jìn)程的PID,父進(jìn)程結(jié)束之前依次給子進(jìn)程發(fā)送結(jié)束信號(hào)即可。5. 實(shí)踐PHP的多進(jìn)程跟C還是挺像的,搞明白了以后用其他語(yǔ)言寫的話也大同小異差不多都是這么個(gè)情況。如果有空的話,嘗試寫一個(gè)小程序,切身體會(huì)一下個(gè)中滋味:1.16歲的鳴人發(fā)送影分身,分出5個(gè)分身
2.每個(gè)分身隨機(jī)生存10到30秒,每秒都輸出點(diǎn)什么
3.保證原身能感受到分身的結(jié)束,然后開動(dòng)另一個(gè)分身,保證最多有5個(gè)分身
4.不使用nohup,讓原身在終端關(guān)閉后依舊能夠運(yùn)行
5.把分身數(shù)量(5)寫進(jìn)一個(gè)配置文件里,當(dāng)給原身發(fā)送信號(hào)(可以考慮用SIGUSR1或SIGUSR2)時(shí),原身讀取配置文件并更新允許的分身最大數(shù)量
6.如果分身多了,關(guān)閉幾個(gè);如果少了,再分出來(lái)幾個(gè)提示:1.用while循環(huán)保證進(jìn)程運(yùn)行,注意sleep以免100%的CPU占用
2.運(yùn)行進(jìn)程的終端被關(guān)閉時(shí),程序會(huì)收到一個(gè)SIGHUP信號(hào)
3.可以用parse_ini_file()函數(shù)解析INI配置文件PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
午夜在线观看免费一区| 性国裸体高清亚洲| 高清av免费一区中文字幕| 性色av蜜臀av| 佐佐木明希电影| 亚洲a一级视频| 亚洲人成亚洲人成在线观看| 免费av福利在线观看| 黄色片视频在线| 一区二区高清免费观看影视大全| 午夜福利三级理论电影| 日韩av高清在线观看| 日本久久综合| 99久久婷婷国产综合| 久久久久久久久久久免费| 国产福利在线看| 9色国产精品| 日本少妇bbwbbw精品| 亚洲v精品v日韩v欧美v专区| wwww国产精品欧美| 亚洲色婷婷一区二区三区| 精品国产一区二区三区免费| 国产精品情侣自拍| 成人听书哪个软件好| 亚洲综合中文字幕在线观看| 国产剧情一区二区| 国内爆初菊对白视频| 91福利视频导航| av观看成片免费网站| 在线成人动漫| 婷婷久久一区| 欧美黑人性猛交xxx| 国产精品7m凸凹视频分类| xxxx性bbbb欧美| 精品丰满少妇一区二区三区| 久久免费在线观看视频| 久久视频在线免费观看| 天堂资源在线亚洲视频| 91免费视频网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产91免费看| 久99久在线| 91亚洲精品视频在线观看| 亚洲精品国产精华液| 91精品在线免费视频| 成人在线视频国产| 国产精品毛片一区二区在线看舒淇| 日韩精品一区二区免费| 在线观看视频免费一区二区三区| 欧美亚洲综合网| 亚洲色偷精品一区二区三区| 欧美日韩性视频一区二区三区| 狠狠一区二区三区| 6080yy精品一区二区三区| 精品美女久久久| 亚洲精品午夜| 久久精品在线播放| 国产在线精品一区二区夜色| 老司机午夜性大片| 久草成色在线| 欧美人妖在线观看| 久久午夜激情| 国产精品永久免费观看| a在线视频v视频| 亚洲三级视频网站| a级黄色毛片| av在线app| 无遮挡的视频在线观看| 自拍偷拍第八页| 久久蜜桃资源一区二区老牛| 日韩在线视频第一页| 久久久精品国产亚洲| 精品三级av| www.av视频在线观看| 国产农村妇女精品一二区| 天堂网在线观看视频| 黄页视频在线观看| 亚洲www色| 永久免费网站视频在线观看| 国产精品白丝喷水在线观看| 欧美日韩伦理片| 六月婷婷一区| 亚洲一区二区三区精品在线观看| 日韩少妇中文字幕| 91免费在线| 日本成人在线不卡| 国产东北露脸精品视频| 国产又粗又爽视频| www操操操| 天天做天天爱天天高潮| 亚洲精品国产成人av在线| 欧美日韩黄色一区二区| 成年免费在线观看| 久久久蜜臀国产一区二区| 国产成a人亚洲精v品在线观看| 韩国精品久久久| 91久久国产综合久久91精品网站| www.欧美日本韩国| 亚洲三级中文字幕| 91夜夜揉人人捏人人添红杏| 亚洲人成伊人成综合网小说| 69xxx免费视频| 国产日韩欧美亚洲一区| av文字幕在线观看| 欧美巨胸大乳hitomi| 成人在线观看一区二区| igao视频网在线视频| 国产精品十八以下禁看| sm久久捆绑调教精品一区| 久久久久久夜精品精品免费| 欧美日韩经典丝袜| 亚洲精品久久久狠狠狠爱| 亚洲国产经典视频| 中国动漫在线观看完整版免费| 亚洲一区二区影院| 777午夜精品福利在线观看| 日韩黄色一区二区| 久久国内精品| 国产精品av免费| www.成人69.com| 亚洲美女在线一区| jizz性欧美23| 亚洲乱码精品一二三四区日韩在线| 美女久久久久久久久久| 欧美一区二区三区在线电影| 亚洲精品乱码久久久久久蜜桃91| 国产一区红桃视频| 国产精品18久久久久久首页狼| 在线精品播放av| 久久九九热视频| 电影一区二区三| 波多野结衣av在线播放| 日本在线免费播放| 亚洲自偷自拍熟女另类| 五月天婷婷在线观看| 国产在视频一区二区三区吞精| 大陆一级毛片| 国产999精品视频| 亚洲欧美一区二区三区在线观看| 免费在线观看的黄色网址| 久久精品黄色片| av在线看片| 中文字幕欧美日韩久久| 成人在线免费看| www.久久爱.com| 丰满熟女人妻一区二区三区| 精品国产一区二区三区av性色| 日韩精品久久久久久福利| 久久精品中文字幕| 成人精品在线观看| 一区二区三区免费| 亚洲国产成人不卡| 国产成人一区二区在线观看| 日韩av黄色在线| 超薄丝袜一区二区| 国产精品久久久久久久免费大片| 无码人妻精品一区二区三应用大全| 蜜桃久久久久久| 亚洲成人精品在线| 中文字幕在线久热精品| 国产一区二区三区免费观看在线| 中日韩美女免费视频网站在线观看| 午夜精品久久久久久99热软件| 青草国产精品| 亚洲福利视频在线| 实拍女处破www免费看| x88av在线| 一个人看的日本www的免费视频| 91精品国产乱码久久| 在线观看欧美一区二区| 国产精品一区二区三区观看| 欧美精品一区二区三区涩爱蜜| 大香煮伊手机一区| 麻豆国产尤物av尤物在线观看| 日韩一二三区视频| 亚洲成色精品| 影音先锋中文字幕第一页| 日韩中文字幕av在线| 久久只精品国产| 欧美激情久久久| www.黄在线观看| 日批视频在线播放| 国产精品99久久久久久久久| 欧美精品乱码久久久久久按摩| 国产一区在线视频| 丝瓜av网站精品一区二区| 国产av 一区二区三区| 四虎成人精品一区二区免费网站| 中文字幕乱在线伦视频乱在线伦视频| 一区二区三区在线免费观看| 欧美视频中文一区二区三区在线观看| 欧美性猛交xxxx乱大交极品| 警花观音坐莲激情销魂小说| 九九久久精品视频| 136国产福利精品导航| 国产日韩视频在线| 成人性生交大合| 欧美高清你懂得| 黄色在线论坛| 成人性生活视频免费看| 午夜高潮免费视频| 精品免费视频| 日韩视频一区二区三区在线播放| 欧美视频在线观看一区二区三区| 亚洲视频在线观看一区| 成人免费三级在线| 欧洲在线/亚洲| 国产韩日精品| 亚洲精品va| 久久久久人妻一区精品色欧美| 麻豆视频一区| 三上悠亚av一区二区三区| 欧美人体视频xxxxx| 波多野结衣亚洲一二三| 国产自产v一区二区三区c| 巨人精品**| eeuss影院www免费看| 欧美日韩国产中文| 在线不卡日本| 色视频在线观看在线播放| 色噜噜狠狠狠综合曰曰曰| 95在线视频| 色综合久久久久久久久五月| 免费又爽又黄禁片视频1000片| 亚洲永久精品免费| 国产精国产精品| 天堂资源在线中文| 性欧美xxxx免费岛国不卡电影| 狠狠色噜噜狠狠狠狠黑人| 不卡av免费在线观看| 日韩av片专区| 日韩欧美一级片| www.欧美三级电影.com| 尤物yw193can在线观看| 丰满人妻熟女aⅴ一区| 91美女免费看| 欧美激情网友自拍| 91国偷自产一区二区三区的观看方式| 五月激情六月丁香| 欧美猛男超大videosgay| 国产偷人妻精品一区| 亚洲天堂2014| 日本a视频在线观看| 亚洲欧美日韩动漫| 美女视频黄a视频全免费观看| 一区二区三区在线播放欧美| 中文字幕不卡av| 欧美一区二区免费在线观看| 秋霞一区二区| 亚洲另类av| 欧美激情第一页在线观看| 亚洲精品视频三区| 久久美女高清视频| 超碰97网站| 久久久精品人妻一区二区三区四| 理论片午夜视频在线观看| 91精品国产自产拍在线观看蜜| h片在线观看视频免费免费| 亚洲电影免费| 亚洲日本久久久午夜精品| 久久精品国产亚洲AV无码男同| 国产精品二区二区三区| 亚洲欧美一区二区久久| 999国产精品视频| 欧美日韩不卡一区二区| 国产一级av毛片| 蜜桃av一区二区三区电影| 91在线九色porny| 亚洲人xxxx| 午夜欧美福利视频| 中文字幕国产在线观看| 精品美女一区二区三区| 成人国产一区二区三区精品| 一区二区在线电影| 黄色网免费观看| 国产精品欧美激情在线观看| 日本精品va在线观看| 成人自拍视频网| 国产精品久久久久久搜索| 国产一级片免费看| 欧美黄色免费| 精品无码人妻一区二区免费蜜桃| 久久久久久免费精品| 亚洲精品一区二区妖精| 在线观看亚洲a| 99精品国产视频| 欧美激情视频一区二区三区免费| 欧美日韩第一页| 欧美高清视频一区二区三区在线观看| 福利av在线| 色综合影院在线| jizz国产免费| 日本免费一区二区三区最新| 思99热精品久久只有精品| 亚洲自拍另类| 亚洲综合欧美日韩| 久久在线免费| 狠狠狠色丁香婷婷综合激情| 在线看成人av| 国产精品流白浆在线观看| 久久精品偷拍视频| 亚洲麻豆一区| 欧洲成人性视频| 7777久久亚洲中文字幕| 免费a级毛片永久免费| 久久亚洲精选| 黄色成人av在线| 亚洲自拍偷拍福利| 免费国产一区二区| 亚洲 欧美 日韩系列| 一级在线免费观看| 狠狠狠狠狠狠操| 日韩三级.com| 国产福利一区在线| 欧美在线精品一区二区三区| 极品色av影院| 国产在线一区观看| 福利91精品一区二区三区| 日本一区二区三区四区五区六区| 日本免费视频| 日本aⅴ精品一区二区三区| 欧美日韩国产色站一区二区三区| 国产高清无密码一区二区三区| 亚洲第一视频在线观看| 在线观看wwww| 欧美亚洲三区| 极品美女扒开粉嫩小泬| 精品久久久久久久一区二区蜜臀|