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

主頁 > 知識庫 > 什么是PHP7中的孤兒進(jìn)程與僵尸進(jìn)程

什么是PHP7中的孤兒進(jìn)程與僵尸進(jìn)程

熱門標(biāo)簽:抖音有個地圖標(biāo)注是什么意思 地下城堡2圖九地圖標(biāo)注 海南人工外呼系統(tǒng)有效果嗎 保定crm外呼系統(tǒng)運(yùn)營商 阿里云400電話申請加工單 西區(qū)企業(yè)怎么做地圖標(biāo)注入駐 七魚外呼系統(tǒng)停用嗎 九江外呼系統(tǒng) 智能電話機(jī)器人排名前十名南京

基本概念

我們知道在unix/linux中,正常情況下,子進(jìn)程是通過父進(jìn)程創(chuàng)建的,子進(jìn)程在創(chuàng)建新的進(jìn)程。子進(jìn)程的結(jié)束和父進(jìn)程的運(yùn)行是一個異步過程,即父進(jìn)程永遠(yuǎn)無法預(yù)測子進(jìn)程 到底什么時候結(jié)束。 當(dāng)一個 進(jìn)程完成它的工作終止之后,它的父進(jìn)程需要調(diào)用wait()或者waitpid()系統(tǒng)調(diào)用取得子進(jìn)程的終止?fàn)顟B(tài)。

孤兒進(jìn)程

一個父進(jìn)程退出,而它的一個或多個子進(jìn)程還在運(yùn)行,那么那些子進(jìn)程將成為孤兒進(jìn)程。孤兒進(jìn)程將被init進(jìn)程(進(jìn)程號為1)所收養(yǎng),并由init進(jìn)程對它們完成狀態(tài)收集工作。

僵尸進(jìn)程

一個進(jìn)程使用fork創(chuàng)建子進(jìn)程,如果子進(jìn)程退出,而父進(jìn)程并沒有調(diào)用wait或waitpid獲取子進(jìn)程的狀態(tài)信息,那么子進(jìn)程的進(jìn)程描述符仍然保存在系統(tǒng)中。這種進(jìn)程稱之為僵死進(jìn)程。

問題及危害

unix提供了一種機(jī)制可以保證只要父進(jìn)程想知道子進(jìn)程結(jié)束時的狀態(tài)信息, 就可以得到。這種機(jī)制就是: 在每個進(jìn)程退出的時候,內(nèi)核釋放該進(jìn)程所有的資源,包括打開的文件,占用的內(nèi)存等。 但是仍然為其保留一定的信息(包括進(jìn)程號the process ID,退出狀態(tài)the termination status of the process,運(yùn)行時間the amount of CPU time taken by the process等)。直到父進(jìn)程通過wait / waitpid來取時才釋放。 但這樣就導(dǎo)致了問題,如果進(jìn)程不調(diào)用wait / waitpid的話, 那么保留的那段信息就不會釋放,其進(jìn)程號就會一直被占用,但是系統(tǒng)所能使用的進(jìn)程號是有限的,如果大量的產(chǎn)生僵死進(jìn)程,將因為沒有可用的進(jìn)程號而導(dǎo)致系統(tǒng)不能產(chǎn)生新的進(jìn)程. 此即為僵尸進(jìn)程的危害,應(yīng)當(dāng)避免。

孤兒進(jìn)程是沒有父進(jìn)程的進(jìn)程,孤兒進(jìn)程這個重任就落到了init進(jìn)程身上,init進(jìn)程就好像是一個民政局,專門負(fù)責(zé)處理孤兒進(jìn)程的善后工作。每當(dāng)出現(xiàn)一個孤兒進(jìn)程的時候,內(nèi)核就把孤 兒進(jìn)程的父進(jìn)程設(shè)置為init,而init進(jìn)程會循環(huán)地wait()它的已經(jīng)退出的子進(jìn)程。這樣,當(dāng)一個孤兒進(jìn)程凄涼地結(jié)束了其生命周期的時候,init進(jìn)程就會代表黨和政府出面處理它的一切善后工作。因此孤兒進(jìn)程并不會有什么危害。

任何一個子進(jìn)程(init除外)在exit()之后,并非馬上就消失掉,而是留下一個稱為僵尸進(jìn)程(Zombie)的數(shù)據(jù)結(jié)構(gòu),等待父進(jìn)程處理。這是每個 子進(jìn)程在結(jié)束時都要經(jīng)過的階段。如果子進(jìn)程在exit()之后,父進(jìn)程沒有來得及處理,這時用ps命令就能看到子進(jìn)程的狀態(tài)是“Z”。如果父進(jìn)程能及時 處理,可能用ps命令就來不及看到子進(jìn)程的僵尸狀態(tài),但這并不等于子進(jìn)程不經(jīng)過僵尸狀態(tài)。 如果父進(jìn)程在子進(jìn)程結(jié)束之前退出,則子進(jìn)程將由init接管。init將會以父進(jìn)程的身份對僵尸狀態(tài)的子進(jìn)程進(jìn)行處理。

僵尸進(jìn)程危害場景

例如有個進(jìn)程,它定期的產(chǎn) 生一個子進(jìn)程,這個子進(jìn)程需要做的事情很少,做完它該做的事情之后就退出了,因此這個子進(jìn)程的生命周期很短,但是,父進(jìn)程只管生成新的子進(jìn)程,至于子進(jìn)程 退出之后的事情,則一概不聞不問,這樣,系統(tǒng)運(yùn)行上一段時間之后,系統(tǒng)中就會存在很多的僵死進(jìn)程,倘若用ps命令查看的話,就會看到很多狀態(tài)為Z的進(jìn)程。 嚴(yán)格地來說,僵死進(jìn)程并不是問題的根源,罪魁禍?zhǔn)资钱a(chǎn)生出大量僵死進(jìn)程的那個父進(jìn)程。因此,當(dāng)我們尋求如何消滅系統(tǒng)中大量的僵死進(jìn)程時,答案就是把產(chǎn)生大 量僵死進(jìn)程的那個元兇槍斃掉(也就是通過kill發(fā)送SIGTERM或者SIGKILL信號啦)。槍斃了元兇進(jìn)程之后,它產(chǎn)生的僵死進(jìn)程就變成了孤兒進(jìn) 程,這些孤兒進(jìn)程會被init進(jìn)程接管,init進(jìn)程會wait()這些孤兒進(jìn)程,釋放它們占用的系統(tǒng)進(jìn)程表中的資源,這樣,這些已經(jīng)僵死的孤兒進(jìn)程 就能瞑目而去了。

孤兒進(jìn)程和僵尸進(jìn)程測試

1、孤兒進(jìn)程被init進(jìn)程收養(yǎng)

$pid = pcntl_fork();

if ($pid > 0) {

  // 顯示父進(jìn)程的進(jìn)程ID,這個函數(shù)可以是getmypid(),也可以用posix_getpid()

  echo "Father PID:" . getmypid() . PHP_EOL;

  // 讓父進(jìn)程停止兩秒鐘,在這兩秒內(nèi),子進(jìn)程的父進(jìn)程ID還是這個父進(jìn)程

  sleep(2);

} else if (0 == $pid) {

  // 讓子進(jìn)程循環(huán)10次,每次睡眠1s,然后每秒鐘獲取一次子進(jìn)程的父進(jìn)程進(jìn)程ID

  for ($i = 1; $i = 10; $i++) {

    sleep(1);

    // posix_getppid()函數(shù)的作用就是獲取當(dāng)前進(jìn)程的父進(jìn)程進(jìn)程ID

    echo posix_getppid() . PHP_EOL;

  }

} else {

  echo "fork error." . PHP_EOL;

}

測試結(jié)果:

php daemo001.php

Father PID:18046

18046

18046

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ 1

1

1

1

1

1

1

1

2、僵尸進(jìn)程和危害 

執(zhí)行以下代碼 php zombie1.php

$pid = pcntl_fork();

if( $pid > 0 ){

  // 下面這個函數(shù)可以更改php進(jìn)程的名稱

  cli_set_process_title('php father process');

  // 讓主進(jìn)程休息60秒鐘

  sleep(60);

} else if( 0 == $pid ) {

  cli_set_process_title('php child process');

  // 讓子進(jìn)程休息10秒鐘,但是進(jìn)程結(jié)束后,父進(jìn)程不對子進(jìn)程做任何處理工作,這樣這個子進(jìn)程就會變成僵尸進(jìn)程

  sleep(10);

} else {

  exit('fork error.'.PHP_EOL);

}

執(zhí)行結(jié)果,另外一個終端窗口

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18458 0.5 1.2 204068 25920 pts/1  S+  16:34  0:00 php father process

www   18459 0.0 0.3 204068 6656 pts/1  S+  16:34  0:00 php child process

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18458 0.0 1.2 204068 25920 pts/1  S+  16:34  0:00 php father process

www   18459 0.0 0.0   0   0 pts/1  Z+  16:34  0:00 [php] defunct>

通過執(zhí)行 ps -aux 命令可以看到,當(dāng)程序在前十秒內(nèi)運(yùn)行的時候,php child process 的狀態(tài)列為 [S+],然而在十秒鐘過后,這個狀態(tài)變成了 [Z+],也就是變成了危害系統(tǒng)的僵尸進(jìn)程。

那么,問題來了?如何避免僵尸進(jìn)程呢?

PHP通過 pcntl_wait() 和 pcntl_waitpid() 兩個函數(shù)來幫我們解決這個問題。了解Linux系統(tǒng)編程的應(yīng)該知道,看名字就知道這其實就是PHP把C語言中的 wait() 和 waitpid() 包裝了一下。

通過代碼演示 pcntl_wait() 來避免僵尸進(jìn)程。

pcntl_wait() 函數(shù):

這個函數(shù)的作用就是 “ 等待或者返回子進(jìn)程的狀態(tài) ”,當(dāng)父進(jìn)程執(zhí)行了該函數(shù)后,就會阻塞掛起等待子進(jìn)程的狀態(tài)一直等到子進(jìn)程已經(jīng)由于某種原因退出或者終止。

換句話說就是如果子進(jìn)程還沒結(jié)束,那么父進(jìn)程就會一直等等等,如果子進(jìn)程已經(jīng)結(jié)束,那么父進(jìn)程就會立刻得到子進(jìn)程狀態(tài)。這個函數(shù)返回退出的子進(jìn)程的進(jìn)程 ID 或者失敗返回 -1。

執(zhí)行以下代碼 zombie2.php

$pid = pcntl_fork();

if ($pid > 0) {

  // 下面這個函數(shù)可以更改php進(jìn)程的名稱

  cli_set_process_title('php father process');

  // 返回$wait_result,就是子進(jìn)程的進(jìn)程號,如果子進(jìn)程已經(jīng)是僵尸進(jìn)程則為0

  // 子進(jìn)程狀態(tài)則保存在了$status參數(shù)中,可以通過pcntl_wexitstatus()等一系列函數(shù)來查看$status的狀態(tài)信息是什么

  $wait_result = pcntl_wait($status);

  print_r($wait_result);

  print_r($status);

  // 讓主進(jìn)程休息60秒鐘

  sleep(60);

} else if (0 == $pid) {

  cli_set_process_title('php child process');

  // 讓子進(jìn)程休息10秒鐘,但是進(jìn)程結(jié)束后,父進(jìn)程不對子進(jìn)程做任何處理工作,這樣這個子進(jìn)程就會變成僵尸進(jìn)程

  sleep(10);

} else {

  exit('fork error.' . PHP_EOL);

}

在另外一個終端中通過ps -aux查看,可以看到在前十秒內(nèi),php child process 是 [S+] 狀態(tài),然后十秒鐘過后進(jìn)程消失了,也就是被父進(jìn)程回收了,沒有變成僵尸進(jìn)程。

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18519 0.5 1.2 204068 25576 pts/1  S+  16:42  0:00 php father process

www   18520 0.0 0.3 204068 6652 pts/1  S+  16:42  0:00 php child process

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18519 0.0 1.2 204068 25576 pts/1  S+  16:42  0:00 php father process

但是,pcntl_wait() 有個很大的問題,就是阻塞。父進(jìn)程只能掛起等待子進(jìn)程結(jié)束或終止,在此期間父進(jìn)程什么都不能做,這并不符合多快好省原則,所以 pcntl_waitpid() 閃亮登場。pcntl_waitpid( pid, status, $option = 0 )的第三個參數(shù)如果設(shè)置為WNOHANG,那么父進(jìn)程不會阻塞一直等待到有子進(jìn)程退出或終止,否則將會和pcntl_wait()的表現(xiàn)類似。

修改第三個案例的代碼,但是,我們并不添加WNOHANG,演示說明pcntl_waitpid()功能:

$pid = pcntl_fork();

if ($pid > 0) {

  // 下面這個函數(shù)可以更改php進(jìn)程的名稱

  cli_set_process_title('php father process');

  // 返回值保存在$wait_result中

  // $pid參數(shù)表示 子進(jìn)程的進(jìn)程ID

  // 子進(jìn)程狀態(tài)則保存在了參數(shù)$status中

  // 將第三個option參數(shù)設(shè)置為常量WNOHANG,則可以避免主進(jìn)程阻塞掛起,此處父進(jìn)程將立即返回繼續(xù)往下執(zhí)行剩下的代碼

  $wait_result = pcntl_waitpid($pid, $status);

  var_dump($wait_result);

  var_dump($status);

  // 讓主進(jìn)程休息60秒鐘

  sleep(60);

} else if (0 == $pid) {

  cli_set_process_title('php child process');

  // 讓子進(jìn)程休息10秒鐘,但是進(jìn)程結(jié)束后,父進(jìn)程不對子進(jìn)程做任何處理工作,這樣這個子進(jìn)程就會變成僵尸進(jìn)程

  sleep(10);

} else {

  exit('fork error.' . PHP_EOL);

}

下面是運(yùn)行結(jié)果,一個執(zhí)行php zombie3.php 程序的終端窗口

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ php zombie3.php

int(18586)

int(0)

^C  

ctrl-c 發(fā)送 SIGINT 信號給前臺進(jìn)程組中的所有進(jìn)程。常用于終止正在運(yùn)行的程序。

下面是ps -aux終端窗口

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18605 0.3 1.2 204068 25756 pts/1  S+  16:52  0:00 php father process

www   18606 0.0 0.3 204068 6636 pts/1  S+  16:52  0:00 php child process

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18605 0.1 1.2 204068 25756 pts/1  S+  16:52  0:00 php father process

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18605 0.0 1.2 204068 25756 pts/1  S+  16:52  0:00 php father process

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php // ctrl-c 后不再被阻塞

www@iZ2zec3dge6rwz2uw4tveuZ:~$

實際上可以看到主進(jìn)程是被阻塞的,一直到第十秒子進(jìn)程退出了,父進(jìn)程不再阻塞  

修改第四段代碼,添加第三個參數(shù)WNOHANG,代碼如下:

$pid = pcntl_fork();

if ($pid > 0) {

  // 下面這個函數(shù)可以更改php進(jìn)程的名稱

  cli_set_process_title('php father process');

  // 返回值保存在$wait_result中

  // $pid參數(shù)表示 子進(jìn)程的進(jìn)程ID

  // 子進(jìn)程狀態(tài)則保存在了參數(shù)$status中

  // 將第三個option參數(shù)設(shè)置為常量WNOHANG,則可以避免主進(jìn)程阻塞掛起,此處父進(jìn)程將立即返回繼續(xù)往下執(zhí)行剩下的代碼

  $wait_result = pcntl_waitpid($pid, $status, WNOHANG);

  var_dump($wait_result);

  var_dump($status);

  echo "不阻塞,運(yùn)行到這里" . PHP_EOL;

  // 讓主進(jìn)程休息60秒鐘

  sleep(60);

} else if (0 == $pid) {

  cli_set_process_title('php child process');

  // 讓子進(jìn)程休息10秒鐘,但是進(jìn)程結(jié)束后,父進(jìn)程不對子進(jìn)程做任何處理工作,這樣這個子進(jìn)程就會變成僵尸進(jìn)程

  sleep(10);

} else {

  exit('fork error.' . PHP_EOL);

}

執(zhí)行 php zombie4.php

www@iZ2zec3dge6rwz2uw4tveuZ:~/test$ php zombie4.php

int(0)

int(0)

不阻塞,運(yùn)行到這里 

另一個ps -aux終端窗口

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18672 0.3 1.2 204068 26284 pts/1  S+  17:00  0:00 php father process

www   18673 0.0 0.3 204068 6656 pts/1  S+  17:00  0:00 php child process

www@iZ2zec3dge6rwz2uw4tveuZ:~$ ps -aux|grep -v "grep\|nginx\|php-fpm" | grep php

www   18672 0.0 1.2 204068 26284 pts/1  S+  17:00  0:00 php father process

www   18673 0.0 0.0   0   0 pts/1  Z+  17:00  0:00 [php] defunct>

實際上可以看到主進(jìn)程是被阻塞的,一直到第十秒子進(jìn)程退出了,父進(jìn)程不再阻塞。  

問題出現(xiàn)了,竟然php child process進(jìn)程狀態(tài)竟然變成了[Z+],這是怎么搞得?回頭分析一下代碼:
我們看到子進(jìn)程是睡眠了十秒鐘,而父進(jìn)程在執(zhí)行pcntl_waitpid()之前沒有任何睡眠且本身不再阻塞,所以,主進(jìn)程自己先執(zhí)行下去了,而子進(jìn)程在足足十秒鐘后才結(jié)束,進(jìn)程狀態(tài)自然無法得到回收。

如果我們將代碼修改一下,就是在主進(jìn)程的pcntl_waitpid()前睡眠15秒鐘,這樣就可以回收子進(jìn)程了。但是即便這樣修改,細(xì)心想的話還是會有個問題,那就是在子進(jìn)程結(jié)束后,在父進(jìn)程執(zhí)行pcntl_waitpid()回收前,有五秒鐘的時間差,在這個時間差內(nèi),php child process也將會是僵尸進(jìn)程。那么,pcntl_waitpid()如何正確使用啊?這樣用,看起來畢竟不太科學(xué)。

那么,是時候引入信號學(xué)了!

您可能感興趣的文章:
  • PHP多進(jìn)程編程之僵尸進(jìn)程問題的理解
  • php 的多進(jìn)程操作實踐案例分析
  • php 多進(jìn)程編程父進(jìn)程的阻塞與非阻塞實例分析
  • php實現(xiàn)的簡單多進(jìn)程服務(wù)器類完整示例
  • 深入解析PHP中的(偽)多線程與多進(jìn)程
  • 深入探究PHP的多進(jìn)程編程方法
  • PHP使用pcntl_fork實現(xiàn)多進(jìn)程下載圖片的方法
  • PHP 多進(jìn)程 解決難題
  • 解析PHP實現(xiàn)多進(jìn)程并行執(zhí)行腳本
  • 以實例全面講解PHP中多進(jìn)程編程的相關(guān)函數(shù)的使用
  • PHP基于文件鎖解決多進(jìn)程同時讀寫一個文件問題示例
  • php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程的方法分析

標(biāo)簽:涼山 九江 甘肅 遼陽 梅河口 十堰 韶關(guān) 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《什么是PHP7中的孤兒進(jìn)程與僵尸進(jìn)程》,本文關(guān)鍵詞  什么,是,PHP7,中的,孤兒,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《什么是PHP7中的孤兒進(jìn)程與僵尸進(jìn)程》相關(guān)的同類信息!
  • 本頁收集關(guān)于什么是PHP7中的孤兒進(jìn)程與僵尸進(jìn)程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲卡一卡二卡三| hd100%videos日本| 精品一区二区三区中文字幕视频| 中文字幕av久久爽av| 国产一区二区久久精品| 日韩免费视频线观看| 国产精品美女久久久久久不卡| 99re热这里只有精品视频| 欧美大片久久久| 香蕉视频xxx| 久久久久国产精品一区| 国产成人av一区| 香蕉伊大人中文在线观看| 国产一区二区网址| 69av在线视频| 日韩欧美一区二区三区久久| 久操视频在线免费播放| 亚洲色图一区二区| 在线观看精品视频看看播放| 亚洲欧美日韩三级| 欧美图区在线视频| 九色91蝌蚪| www.51色.com| 精品国产青草久久久久96| 国产又大又粗又硬| 男的操女的网站| 欧美一级搡bbbb搡bbbb| 秘密影院久久综合亚洲综合| 很污很黄的网站| 国产剧情在线视频| 青青草国产免费一区二区下载| 九九视频在线播放| 欧美视频久久| 亚洲二区av| 毛片网站免费观看| aaa日本高清在线播放免费观看| 国产精品久久亚洲7777| 国内毛片久久| 国产成人精品亚洲日本在线观看| 成人在线免费| 欧美日韩激情一区| 三级无遮挡在线观看| 国产精品毛片一区二区三区| 4438亚洲最大| 年下总裁被打光屁股sp| 亚洲欧美日韩不卡一区二区三区| 最新日本在线观看| 欧美国产成人精品| 国产一区二区不卡| 久国产精品韩国三级视频| 精品免费国产一区二区三区四区| 国产探花视频在线观看| 国产精品视频网站| 一区二区美女视频| 欧美手机视频| 蜜臀久久99精品久久一区二区| 欧美日韩中文在线观看| 欧美成aaa人片在线观看蜜臀| 亚洲成a人v欧美综合天堂下载| 国产桃色电影在线播放| 日韩一级二级| 欧美激情自拍偷拍| 欧美 日韩 亚洲 一区| 97人人做人人爽香蕉精品| 国内精品久久久久影院一蜜桃| 污视频在线播放| 999精品视频一区二区三区| 日韩一级片免费| 亚洲免费观看高清完整| 久久这里只有精品18| 天堂av在线中文| 免费在线观看成年人视频| 国产免费不卡av| 欧美自拍偷拍一区二区| 妞干网在线免费视频| 久久久久久久久影院| 免费日韩中文字幕| 国产精品无av码在线观看| 国产秒拍福利视频露脸| 国模大尺度视频一区二区| 亚洲线精品一区二区三区| 国产一区二区三区91| 日韩精品免费一区二区夜夜嗨| 日韩免费电影一区二区三区| 2020天天操| 性爱视频日本| 亚洲国产精品二十页| b站大片免费直播| 国产精品日韩在线播放| 男人透女人免费视频| 国产精品一级伦理| 国产www在线| 国产一区二区网| 一级 黄 色 片一| 欧美国产日本高清在线| 精品福利av导航| 狠狠色噜噜狠狠狠狠色吗综合| 国产aⅴ爽av久久久久成人| 亚洲国产精品电影在线观看| 欧美videos巨大粗暴| 一区视频在线| 台湾佬中文娱乐久久久| 思思99re6国产在线播放| 国产精品精品视频一区二区三区| 国产激情第一页| 999精品国产| 一区二区在线视频| 明星乱亚洲合成图.com| 国产在线激情| 人妻无码中文字幕免费视频蜜桃| 国产毛片精品国产一区二区三区| 国产www在线观看| 999精品免费视频| 91精品久久久久久久久99蜜臂| av在线www| 色aⅴ色av色av偷拍| 日韩一区在线看| 日本视频在线一区| 日本久久电影网| 一区二区不卡| 操碰免费视频| 91丨九色丨国产在线| 日本特黄在线观看| 亚洲一区二区偷拍精品| 亚洲国产精品久久久久婷蜜芽| 国产黄色麻豆视频| 97秋霞电影网| 精品免费视频一卡2卡三卡4卡不卡| 久久九九免费视频| 欧美一区二区三区在线电影| 999色成人| 亚洲欧美日韩精品久久| 国产在线精品播放| 午夜一区二区三视频在线观看| 国产精品熟女久久久久久| 骚虎视频欧美| 毛片av中文字幕一区二区| 亚洲成人av免费看| 黄色小网站在线观看| 国产精品免费观看| 顶臀精品视频www| 成人au免费视频影院| 在线电影av| 韩国精品福利一区二区三区| 中文字幕一区二区三区精华液| 69视频免费看| 久久久久久久久久免费视频| 国产一区二区三区直播精品电影| 精品国产亚洲在线| 99精品久久| 久久一区二区三区欧美亚洲| 亚洲在线网站| 黄色av网站免费在线观看| 美女又爽又黄免费动漫| 九色视频成人自拍| 亚洲精品福利在线| 亚洲精品四区| 中文字幕色婷婷在线视频| 国产一二三在线| 在线观看国产精品入口男同| 99久久免费精品国产72精品九九| 丁香花在线电影小说观看| 老熟妻内射精品一区| www.jizz在线观看| 51精品秘密在线观看| 成人直播视频| 冲田杏梨av在线| 国产一区二区三区在线观看精品| 亚洲精品国产欧美在线观看| 欧美日韩亚洲国内综合网| www.日本久久久久com.| 国产精品久久久久毛片大屁完整版| 一区二区三区中文在线观看| 91精品国产91久久久久福利| 99re热视频这里只精品| 一区二区久久久久久| 成人影视在线播放| 一二三四区在线观看| 亚洲成a人片在线观看中文| 日韩精品免费在线视频| 国产清纯白嫩初高生在线观看91| 91.麻豆视频| 免费99视频| 欧美性videosxxxxx| xxxx在线播放| 国内精品久久久久影院一蜜桃| 成人福利视频导航| 精品欧美视频| 91亚洲精品| 香蕉综合视频| 欧美性猛交xxxx偷拍洗澡| 超碰97免费在线| 一本久道综合色婷婷五月| 久久91亚洲| 久久中文字幕在线观看| 亚洲美腿欧美激情另类| 国产精品免费电影| 一本一本久久a久久精品综合麻豆| 欧美成人免费视频a| 日韩亚洲精品视频| 精品无码久久久久久久动漫| 成人网免费视频| 亚洲伊人影院| 亚洲国产成人久久| av资源中文在线天堂| 国产精品久久7| 成人小视频免费看| 亚洲精品视频自拍| 日韩精品一二三区| 欧美激情视频一区| 国产精品免费看一区二区三区| 日韩精品亚洲精品| 五月婷婷激情综合网| 一区二区在线观看免费视频| 精品国产a一区二区三区v免费| 亚洲国产精品v| 久久99热只有频精品91密拍| 99re66热这里只有精品8| 日韩欧美成人免费视频| 精品综合久久久久久8888| 欧美极品美女视频| 久久综合99| 99视频在线观看视频| 日本福利在线观看| 精品视频一区二区三区四区五区| 综合av第一页| 国产91ⅴ在线精品免费观看| 一区二区三区四区蜜桃| 九色在线播放| 欧美午夜宅男影院在线观看| 久久久久久久久97黄色工厂| 美女被内谢流白浆高视频| 一本大道五月香蕉| 久久99热这里只有精品| 欧美日韩国产在线观看| 欧美男体视频| 日韩精品一区二区三区四区五区| 日韩一区二区三区视频| 久久久久久久久久久电影| 尤物在线精品视频| fc2ppv国产精品久久| 一个人免费播放在线视频看片| 亚洲新声在线观看| 日韩精品卡通动漫网站| 一区二区欧美日韩视频| 69xxxx国产| 极品美女销魂一区二区三区免费| 亚洲国产成人porn| 久久精品国产一区二区三区日韩| 色国产在线视频| 国产欧美一级片| 国产va在线视频| 无码国产精品久久一区免费| 国产伦精品一区二区三区视频我| 理论片在线观看理伦片| 山东少妇露脸刺激对白在线| 久久手机精品视频| www.精品国产| 欧美**室bdsm视频| 亚洲国产视频一区二区三区| 国产成人免费在线视频| 欧美久久精品一级黑人c片| 岛国毛片在线观看| 91色在线播放| 男女污污的视频| 欧美黄色大片在线观看| 精品成人免费自拍视频| 激情五月综合色婷婷一区二区| 久久久久成人黄色影片| 春意影院普通入口| 国产一二三区av| 国产成人亚洲欧美电影| 黄色免费视频在线观看| 精品国产一区久久久| 国产情侣久久| 国产福利在线播放麻豆| 91资源在线播放| 风流少妇一区二区| 久久99久国产精品黄毛片入口| 国产激情视频一区二区| 久久日本片精品aaaaa国产| 亚洲国产视频一区二区| 91麻豆精品一区二区三区| 少妇精品无码一区二区| 亚洲资源中文字幕| 在线观看国产精品日韩av| 国产91在线播放| 久艹视频在线观看| 成人在线视频区| 蜜臀精品久久久久久蜜臀| 久久亚洲捆绑美女| 美脚丝袜一区二区三区在线观看| 不卡日本视频| 麻豆网站免费观看| 国产精品拍天天在线| 国产成人愉拍精品久久| 懂色av影视一区二区三区| 在线视频网站| 亚洲国产精品v| 亚洲一线二线三线久久久| 亚洲天堂最新地址| 麻豆精品一区二区三区视频| 欧美视频在线观看免费网址| 青青草免费观看视频| 亚洲国产91色在线| 亚洲精品久久| 国产日韩成人内射视频| 男人的天堂一区二区| 久操视频在线观看免费| 欧美丰满老妇| 亚洲第一区第二区第三区| 荫蒂被男人添免费视频| 国产精品久久久久久久久久辛辛| 少妇高潮一区二区三区| 亚洲欧美日韩一区在线| 中文字幕电影av| 激情成人综合| 一二三四国产精品| 在线看片线路1| 成人两性免费视频| 中文字幕在线观看1| 国产一区二区欧美| 中文字幕日本在线观看| 亚洲天堂视频在线观看| 国产精品黄色大片| 久久蜜桃香蕉精品一区二区三区| 国产卡一卡二卡三| 99国产精品自拍|