国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

PHP-FPM源碼分析

共 9936字,需瀏覽 20分鐘

 ·

2020-11-06 06:36

作者:ethread

來源:SegmentFault 思否






一個請求從瀏覽器到達PHP腳本執(zhí)行中間有個必要模塊是網(wǎng)絡處理模塊,F(xiàn)PM是這個模塊的一部分,配合fastcgi協(xié)議實現(xiàn)對請求的從監(jiān)聽到轉(zhuǎn)發(fā)到PHP處理,并將結(jié)果返回這條流程。


FPM采用多進程模型,就是創(chuàng)建一個master進程,在master進程中創(chuàng)建并監(jiān)聽socket,然后fork多個子進程,然后子進程各自accept請求,子進程在啟動后阻塞在accept上,有請求到達后開始讀取請求 數(shù)據(jù),讀取完成后開始處理然后再返回,在這期間是不會接收其它請求的,也就是說fpm的子進程同時只能響應 一個請求,只有把這個請求處理完成后才會accept下一個請求,這是一種同步阻塞的模型。master進程負責管理子進程,監(jiān)聽子進程的狀態(tài),控制子進程的數(shù)量。master進程與worker進程之間通過共享變量同步信息。




從main函數(shù)開始


int main(int argc, char *argv[]){    zend_signal_startup();    // 將全局變量sapi_module設置為cgi_sapi_module    sapi_startup(&cgi_sapi_module);    fcgi_init();    // 獲取命令行參數(shù),其中php-fpm -D、-i等參數(shù)都是在這里被解析出來的    // ...
cgi_sapi_module.startup(&cgi_sapi_module);
fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf, php_allow_to_run_as_root, force_daemon, force_stderr);
// master進程會在這一步死循環(huán),后面的流程都是子進程在執(zhí)行。 fcgi_fd = fpm_run(&max_requests);

fcgi_fd = fpm_run(&max_requests); request = fpm_init_request(fcgi_fd);
// accept請求 // ....}

main()函數(shù)展現(xiàn)了這個fpm運行完整的框架,可見整個fpm主要分為三個部分:1、運行前的fpm_init();2、運行函數(shù)fpm_run();3、子進程accept請求處理。




FPM中的事件監(jiān)聽機制


在詳細了解fpm工作過程前,我們要先了解fpm中的事件機制。在fpm中事件的監(jiān)聽默認使用kqueue來實現(xiàn),關(guān)于kqueue的介紹可以看看我之前整理的這篇文章kqueue用法簡介。


// fpm中的事件結(jié)構(gòu)體struct fpm_event_s {    // 事件的句柄    int fd;    // 下一次觸發(fā)的事件    struct timeval timeout;    // 頻率:多久執(zhí)行一次    struct timeval frequency;    // 事件觸發(fā)時調(diào)用的函數(shù)    void (*callback)(struct fpm_event_s *, short, void *);    void *arg;                // 調(diào)用callback時的參數(shù)    // FPM_EV_READ:讀;FPM_EV_TIMEOUT:;FPM_EV_PERSIST:;FPM_EV_EDGE:;    int flags;    int index;                // 在fd句柄數(shù)組中的索引    // 事件的類型 FPM_EV_READ:讀;FPM_EV_TIMEOUT:計時器;FPM_EV_PERSIST:;FPM_EV_EDGE:;    short which;};
// 事件隊列typedef struct fpm_event_queue_s { struct fpm_event_queue_s *prev; struct fpm_event_queue_s *next; struct fpm_event_s *ev;} fpm_event_queue;

以fpm_run()中master進程注冊的一個sp[0]的可讀事件為例:


void fpm_event_loop(int err){    static struct fpm_event_s signal_fd_event;
// 創(chuàng)建一個事件:管道sp[0]可讀時觸發(fā) fpm_event_set(&signal_fd_event, fpm_signals_get_fd(), FPM_EV_READ, &fpm_got_signal, NULL); // 將事件添加進queue fpm_event_add(&signal_fd_event, 0);
// 處理定時器等邏輯
// 以阻塞的方式獲取事件 // module->wait()是一個接口定義的方法簽名,下面展示kqueue的實現(xiàn) ret = module->wait(fpm_event_queue_fd, timeout);}

int fpm_event_add(struct fpm_event_s *ev, unsigned long int frequency){ // ... // 如果事件是觸發(fā)事件則之間添加進queue中 // 對于定時器事件先根據(jù)事件的frequency設置事件的觸發(fā)頻率和下一次觸發(fā)的事件 if (fpm_event_queue_add(&fpm_event_queue_timer, ev) != 0) { return -1; }
return 0;}
static int fpm_event_queue_add(struct fpm_event_queue_s **queue, struct fpm_event_s *ev){ // ... // 構(gòu)建并將當前事件插入事件隊列queue中
if (*queue == fpm_event_queue_fd && module->add) { // module->add(ev)是一個接口定義的方法簽名,下面展示kqueue的實現(xiàn) module->add(ev); }
return 0;}
// kqueue關(guān)于添加事件到kqueue的實現(xiàn)static int fpm_event_kqueue_add(struct fpm_event_s *ev) /* {{{ */{ struct kevent k; int flags = EV_ADD;
if (ev->flags & FPM_EV_EDGE) { flags = flags | EV_CLEAR; }
EV_SET(&k, ev->fd, EVFILT_READ, flags, 0, 0, (void *)ev);
if (kevent(kfd, &k, 1, NULL, 0, NULL) < 0) { zlog(ZLOG_ERROR, "kevent: unable to add event"); return -1; }
/* mark the event as registered */ ev->index = ev->fd; return 0;}


FPM中關(guān)于kqueue的實現(xiàn)


// kqueue關(guān)于從kqueue中監(jiān)聽事件的實現(xiàn)static int fpm_event_kqueue_wait(struct fpm_event_queue_s *queue, unsigned long int timeout) /* {{{ */{    struct timespec t;    int ret, i;
/* ensure we have a clean kevents before calling kevent() */ memset(kevents, 0, sizeof(struct kevent) * nkevents);
/* convert ms to timespec struct */ t.tv_sec = timeout / 1000; t.tv_nsec = (timeout % 1000) * 1000 * 1000;
/* wait for incoming event or timeout */ ret = kevent(kfd, NULL, 0, kevents, nkevents, &t); if (ret == -1) {
/* trigger error unless signal interrupt */ if (errno != EINTR) { zlog(ZLOG_WARNING, "epoll_wait() returns %d", errno); return -1; } }
/* fire triggered events */ for (i = 0; i < ret; i++) { if (kevents[i].udata) { struct fpm_event_s *ev = (struct fpm_event_s *)kevents[i].udata; fpm_event_fire(ev); /* sanity check */ if (fpm_globals.parent_pid != getpid()) { return -2; } } }
return ret;}




fpm_init


fpm_init()負責啟動前的初始化工作,包括注冊各個模塊的銷毀時用于清理變量的callback。下面只介紹幾個重要的init。


fpm_conf_init_main


負責解析php-fpm.conf配置文件,分配worker pool內(nèi)存結(jié)構(gòu)并保存到全局變量fpm_worker_all_pools中,各worker pool配置解析到 fpm_worker_pool_s->config 中。


所謂worker pool 是fpm可以同時監(jiān)聽多個端口,每個端口對應一個worker pool。


fpm_scoreboard_init_main


為每個worker pool分配一個fpm_scoreboard_s結(jié)構(gòu)的內(nèi)存空間scoreboard,用于記錄worker進程運行信息。


// fpm_scoreboard_s 結(jié)構(gòu)struct fpm_scoreboard_s {    union {        atomic_t lock;        char dummy[16];    };    char pool[32];    int pm;                    // 進程的管理方式 static、dynamic、ondemand    time_t start_epoch;    int idle;                // 空閑的worker進程數(shù)    int active;                // 繁忙的worker進程數(shù)    int active_max;            // 最大繁忙進程數(shù)    unsigned long int requests;    unsigned int max_children_reached;    int lq;    int lq_max;    unsigned int lq_len;    unsigned int nprocs;    int free_proc;    unsigned long int slow_rq;    struct fpm_scoreboard_proc_s *procs[];};


fpm_signals_init_main


fpm注冊自己的信號量,并設置監(jiān)聽函數(shù)的處理邏輯。

int fpm_signals_init_main() /* {{{ */{    struct sigaction act;
// 創(chuàng)建一個全雙工套接字 // 全雙工的套接字是一個可以讀、寫的socket通道[0]和[1],每個進程固定一個管道。 // 寫數(shù)據(jù)時:管道不滿不會被阻塞;讀數(shù)據(jù)時:管道里沒有數(shù)據(jù)會阻塞(可設置) // 向sp[0]寫入數(shù)據(jù)時,sp[0]的讀取將會被阻塞,sp[1]的寫管道會被阻塞,sp[1]中此時讀取sp[0]的數(shù)據(jù) if (0 > socketpair(AF_UNIX, SOCK_STREAM, 0, sp)) { zlog(ZLOG_SYSERROR, "failed to init signals: socketpair()"); return -1; }
if (0 > fd_set_blocked(sp[0], 0) || 0 > fd_set_blocked(sp[1], 0)) { zlog(ZLOG_SYSERROR, "failed to init signals: fd_set_blocked()"); return -1; }
if (0 > fcntl(sp[0], F_SETFD, FD_CLOEXEC) || 0 > fcntl(sp[1], F_SETFD, FD_CLOEXEC)) { zlog(ZLOG_SYSERROR, "falied to init signals: fcntl(F_SETFD, FD_CLOEXEC)"); return -1; }
memset(&act, 0, sizeof(act)); act.sa_handler = sig_handler; // 監(jiān)聽到信號調(diào)用這個函數(shù) sigfillset(&act.sa_mask);
if (0 > sigaction(SIGTERM, &act, 0) || 0 > sigaction(SIGINT, &act, 0) || 0 > sigaction(SIGUSR1, &act, 0) || 0 > sigaction(SIGUSR2, &act, 0) || 0 > sigaction(SIGCHLD, &act, 0) || 0 > sigaction(SIGQUIT, &act, 0)) {
zlog(ZLOG_SYSERROR, "failed to init signals: sigaction()"); return -1; } return 0;}
// 所有信號共用同一個處理函數(shù)static void sig_handler(int signo) /* {{{ */{ static const char sig_chars[NSIG + 1] = { [SIGTERM] = 'T', [SIGINT] = 'I', [SIGUSR1] = '1', [SIGUSR2] = '2', [SIGQUIT] = 'Q', [SIGCHLD] = 'C' }; char s; int saved_errno;
if (fpm_globals.parent_pid != getpid()) { return; }
saved_errno = errno; s = sig_chars[signo]; zend_quiet_write(sp[1], &s, sizeof(s)); // 將信息對應的字節(jié)寫進管道sp[1]端,此時sp[1]端的讀數(shù)據(jù)會阻塞;數(shù)據(jù)可以從sp[0]端讀取 errno = saved_errno;}


fpm_sockets_init_main


每個worker pool 開啟一個socket套接字。


fpm_event_init_main


這里啟動master的事件管理器。用于管理IO、定時事件,其中IO事件通過kqueue、epoll、 poll、select等管理,定時事件就是定時器,一定時間后觸發(fā)某個事件。同樣,我們以kqueue的實現(xiàn)為例看下源碼。


int fpm_event_init_main(){    // ...    if (module->init(max) < 0) {        zlog(ZLOG_ERROR, "Unable to initialize the event module %s", module->name);        return -1;    }    // ...}
// max用于指定kqueue事件數(shù)組的大小static int fpm_event_kqueue_init(int max) /* {{{ */{ if (max < 1) { return 0; }
kfd = kqueue(); if (kfd < 0) { zlog(ZLOG_ERROR, "kqueue: unable to initialize"); return -1; }
kevents = malloc(sizeof(struct kevent) * max); if (!kevents) { zlog(ZLOG_ERROR, "epoll: unable to allocate %d events", max); return -1; }
memset(kevents, 0, sizeof(struct kevent) * max);
nkevents = max;
return 0;}





fpm_run


fpm_init到此結(jié)束,下面進入fpm_run階段,在這個階段master進程會根據(jù)配置fork出多個子進程然后master進程會進入fpm_event_loop(0)函數(shù),并在這個函數(shù)內(nèi)部死循環(huán),也就是說master進程將不再執(zhí)行后面的代碼,后面的邏輯全部是子進程執(zhí)行的操作。


master進程在fpm_event_loop里通過管道sp來監(jiān)聽子進程的各個事件,同時也要處理自身產(chǎn)生的一些事件、定時器等任務,來響應的管理子進程。內(nèi)部的邏輯在介紹事件監(jiān)聽機制時已經(jīng)詳細說過。


int fpm_run(int *max_requests) /* {{{ */{    struct fpm_worker_pool_s *wp;
/* create initial children in all pools */ for (wp = fpm_worker_all_pools; wp; wp = wp->next) { int is_parent;
is_parent = fpm_children_create_initial(wp);
if (!is_parent) { goto run_child; } }
/* run event loop forever */ fpm_event_loop(0);
run_child: /* only workers reach this point */
fpm_cleanups_run(FPM_CLEANUP_CHILD);
*max_requests = fpm_globals.max_requests; return fpm_globals.listening_socket;}





子進程處理請求


回到main函數(shù),fpm_run后面的邏輯都是子進程在運行。首先會初始化一個fpm的request結(jié)構(gòu)的變量,然后子進程會阻塞在fcgi_accept_request(request)函數(shù)上等待請求。關(guān)于fcgi_accept_request函數(shù)就是死循環(huán)一個socket編程的accept函數(shù)來接收請求,并將請求數(shù)據(jù)全部取出。

...

// 初始化requestrequest = fpm_init_request(fcgi_fd);zend_first_try {    // accept接收請求    while (EXPECTED(fcgi_accept_request(request) >= 0)) {        init_request_info();
fpm_request_info();
if (UNEXPECTED(php_request_startup() == FAILURE)) { // ... } if (UNEXPECTED(fpm_status_handle_request())) { goto fastcgi_request_done; } ... // 打開配置文件中DOCUMENT_ROOT設置的腳本 if (UNEXPECTED(php_fopen_primary_script(&file_handle) == FAILURE)) { ... }
fpm_request_executing();
// 執(zhí)行腳本 php_execute_script(&file_handle); ... } // 銷毀請求request fcgi_destroy_request(request); // fcgi退出 fcgi_shutdown();
if (cgi_sapi_module.php_ini_path_override) { free(cgi_sapi_module.php_ini_path_override); } if (cgi_sapi_module.ini_entries) { free(cgi_sapi_module.ini_entries); }} zend_catch { ...} zend_end_try();




點擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

-?END -

瀏覽 34
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 91高清视频| 四季AV综合网站| 麻豆免费福利视频| 狠狠狠狠狠狠狠狠| 秋霞午夜福利| 亚州视频在线观看| 日韩欧美色| 噼里啪啦免费观看视频大全| 国产无码免费在线观看| 国产乱国产乱老熟300视频| 国产不卡在线观看| 欧美夜夜草视频| 精品国产重口乱子伦| 成年人视频网站| 51妺嘿嘿午夜福利视频| 日韩日逼视频| a级片在线观看| 国产免费一区二区在线A片视频| 日本高清久久| 欧美A片视频| 国产91久久婷婷一区二区| 中文字幕在线日韩| 影音先锋中文字幕av| 91精品婷婷国产综合久久竹菊| 国产一级生活片| 国产秘久久一区二区| 精品国内视频| 操逼在线视频| 农村三级片| 无码在线免费观看| 99热这里只有精| 操久久久久久| 午夜激情五月天| 日本性欧美| 国产黄片网站| 国产又爽又黄视频| 人人草人人爱| 成人A√| 亚洲欧美美国产| 91麻豆福利视频| 亚洲国产视频在线观看| 日韩无码三级| 99久久9| 欧美在线a| 国产亚洲色婷婷久久99精品| 日本一区二区三区免费看| 日本爱爱免费| 色就操| 欧美77777| 亚洲视频无码在线| 成人三级电影网| 婷婷综合五月天| 久久精品99国产国产精| 青草久久久| 在线观看国产小视频| 少妇无码中文| 欧美日韩中文字幕| 成人午夜婬片A片| 精品内射| 久久久久久久麻豆| 91无码高清视频| 久在线| 黄色视频免费国产| 黄色电影一区二区三区| 91小宝寻花一区二区三区三级| 91亚洲国产成人久久精品网站 | 亚洲欧洲免费看| 江苏妇搡BBB搡BBBB| 亚洲人一级电影| 久久精品小视频| 成人福利视频在线观看| 影音av在线| 狠狠草视频| 国产美女做爱视频| AV三级片网站| 亚洲AV男人天堂| 青青草原成人视频| 青草视频精品| 毛片毛片毛片毛片| 久久无码一区二区| 婷婷丁香五月在线| 欧美日韩国产在线观看| 黄片天堂| 青青草在线观看视频| 国产精品天天AVJ精麻传媒| 日本黄色一级| 黄色一级视频在线观看| 免费观看高清无码视频| a国产| 影音先锋av资源在线| 豆花视频在线播放| 亚洲视频中文字幕| av中文字幕网| 国产l精品久久久久久久久久| 欧美日韩加勒比| 麻豆操逼| 精品成人A片久久久久久不卡三区 免费看成人A片无码照片88hⅤ | 亚洲一区二区在线视频| 无码人妻久久一区二区三区蜜桃| 人人操在线公开| 俄女兵一级婬片A片| 国产粉嫩在线观看| 网站av| 麻豆三级电影| 精品无码在线| 中文字幕在线不卡视频| 黄色小视频在线| 一本一道vs波多野结衣| 国产免费黄色电影| 97久久人人| av在线天堂网| 学生妹一级| 毛片一区| 九九色影院| 成人在线A片| 色播欧美| 久久久精品999| 乱伦五月天| 婷婷视频在线观看| 欧美一级棒| 成人三级片网| 久久婷婷精品| 久久国产精品视频| 亚洲www.| 黄色视频一级| 黄色免费观看网站| 亚洲xx网| 91白丝喷水自慰网站| 手机看片福利永久| 淫五月| 911国产精品| 100国产精品人妻无码| 成年人久久| 欧洲尤物不卡播放六区| 日韩成人免费| 亚洲无aV在线中文字幕| 福利三区| 国产精品久久久久久无码人妻| 一级真人毛片| 怕怕怕视频| 中文爱爱视频| 99这里只有精品| 91丨人妻丨偷拍| 成人婷婷| 中国黄色学生妹一级片| 亚洲欧美日韩动漫| 亚洲成人精品AV| 国产精品做爱| 一区在线看| 内射自拍| 国产熟妇码视频户外直播| 无码一区二区三区在线| 免费在线观看a| 国产精品婷婷午夜在线观看| 视色视频在线观看18| 国产免费一级特黄A片| 影音先锋91| 国产精品99久久免费黑人人妻| 黑人又粗又大XXXXOO| 色婷婷丁香五月| 夜夜操夜夜爽| 欧美另类视频| 一本色道久久综合亚洲精品久久| wwwxxx18| 91在线免费视频观看| 亚洲精品一二三| 激情无码一区二区三区| 成人性爱视频网| 欧美日韩在线观看中文字幕| 久久久久久久久久免费视频| 中文字幕午夜福利| 日韩欧美不卡色不卡| 懂色Av| 色婷婷丁香五月| 婷婷五月天影院| 亚洲影音先锋| 欧美一级黄色电影| 成人一级视频| 超碰97人人操| 男人的天堂视频| 男人网站| 韩日毛片| 大黑鸡巴视频| 青青伊人网| 欧美成人性爱网站| AV片在线免费观看| 91精品国产麻豆国产自产在线| 特级西西444WWW视频| 欧美黄片免费在线观看| 18禁一区| 黄色亚洲视频| 亚洲精品午夜精品| 国产女人18毛片水真多18精品| 亚洲一区在线播放| 无码123| 国产乱伦电影| 免费无码国产在线53| 黄视频免费在线观看| 搡BBBB搡BBB搡Bb| 国产精品视频久久| 在线观看A片| 国精产品一区一区三区四区| 欧美日色| 人人操人人搞| 国产乱子伦一区二区三区视频| 国产操| 夜夜躁狠狠躁日日躁av| 国产秘久久一区二区| 特极西西444WWW大胆无码| 欧美一级黃色A片免费看小优视频| 草逼国产| 欧美日韩一级A片| 香蕉AV777XXX色综合一区| 青娱乐国产精品一区二区| 久久精品免费看| 国产精品免费人成人网站酒店| A级免费毛片| 天天射日| 蜜芽成人精品久久久视频| 91高潮久久久久久久| 乳揉みま痴汉电车羽月希免费观看 | 日韩精品中文字幕无码| 尤物com| 日韩无码福利| 中文字幕一级A片高清免| 无码波多野结衣| 大香蕉少妇| 青青草视频偷拍| 五月天黄色片| 日本亚洲中文字幕| 天天射天天操天天干| 成年人免费视频在线观看| 人妻斩り43歳| 成人免费A片喷| 荫蒂添到高潮免费视频| 熟女人妻在线观看| 呦小BBBB小小BBBB| 水蜜桃一区| 亚洲综合伊人| 51一区二区三区| a片网站在线观看| 三级网址在线| 国产成人在线免费| 成人无码免费| 国外成人视频| 国产一区二区免费在线观看| 91美女在线视频| 五月婷婷婷婷| 国产一级a毛一级a做免费高清视频| 日韩高清无码中文字幕| 成人片成人网久久蜜桃臀| 日本黄色精品| 亚洲中文第一页| 逼特逼视频在线| 国产视频你懂的| 国产色婷婷| 波多野结衣中文字幕久久| 日韩中字幕无码| 日韩在线视频中文字幕| 日韩免费网站| 久久午夜无码鲁丝片午夜精品| 手机看片福利视频| 人人操超碰在线观看| 久操成人| 操逼大全| 国产女主播在线播放| 在线观看亚| 欧美亚洲三级| 欧美精品秘一区二区三区蜜臀| 丰臀肥逼高清视频电影播放| 爱搞搞就要爱搞搞| 久久久久久91| 自拍偷拍在线视频| 蜜臀AV一区二区三区免费看| 中文字幕丰满的翔田千里| 欧美日本中文字幕| 亚洲sese| 操屄视频播放| 久久久波多野结衣| 日韩精品成人在线| 亚洲韩国中文字幕| 久久久久久久AV| 亚洲黄色视频网站在线观看| 亚洲AV免费在线| 无码在线视频免费观看| 综合伊人大香蕉| 波多野结衣高清无码视频| 九九久久精品| 少妇BBBB| 九九热av| 狼友视频在线观看18| 中文字幕无吗| 黑人猛躁白人BBBBBBBBB| 国产精品福利视频| 9191久久| 日韩在线观看一区二区| 欧美国产综合| 成人午夜视频精品一区| 日本精品黄色视频| 日韩精品123| www国产| 国产肏屄| 91拍真实国产伦偷精品| 日本特黄一级片| 欧美性高潮| 亚洲视频一区二区三区| 亚洲色一| 久久丝袜视频| 五月色婷婷撸| 亚洲乱伦图| 日韩一级免费毛片| 巨爆乳肉感一区二区三区视频| 少妇厨房愉情理伦BD在线观看| 欧美综合激情| 天天操视频网站| 在线观看黄色网| 日韩在线视频观看| 日韩免费片| 色欲一区| 精品孕妇一级A片免费看| BBB搡BBB搡BBB搡BBB| 天天天天天天干| 国产精品做爱| 翔田千里一区二区三区| 成人网站视频在线免费观看| 久草黄色| 成人亚洲| 国产一区二区视频在线| 99久久婷婷国产综合精品hsex,亚 91小宝寻花一区二区三区三级 | 亚洲在线免费| 国产乱子伦精品久久| 97碰碰碰| 波多野结衣视频在线观看| 浮力影院欧美| 熟女少妇网站| 午夜爽爽爽| 日韩黄色电影| 国产精品天天狠天天看| 特级WWW444至码| 国产精品一区av| 亚洲色欧美| 亚洲色成人中文字幕在线| 先锋影音麻豆| 波多野结衣无码NET,AV| 天天色AV| 欧美老妇另类老屁XXX| 99热只有精| www.伊人| 黄色视频网站在线播放| 九九热精品视频在线观看| 日本精品视频在线| 青青青草视频| 欧美精品在线免费观看| 91久久久久久| 中文字幕成人网站中文字幕| 亚洲性视频| 99国产精品久久久久久久| 亚欧免费视频| 中文字幕网站在线观看| 亚洲你懂的| 成人亚洲天堂| 亚洲第一AV| 爱搞搞就要爱搞搞| 国精产品一区一区三区| 99久久人妻无码中文字幕系列| 一区二区三区四区久久| 亚洲国产精品精JIZZ老师| 欧美一二三区| 日韩精品视频免费在线观看| 中文字幕三区| 五月婷婷色色网| 大香蕉尹人在看| 91视频播放| 肏逼免费视频| 免费无码在线观看| 欧美日在线观看| 亚洲图片欧美色图| 国产成人一区二区无码| 国产精品久久久精品| 精品无码9| 成全在线观看高清的| 草b网站| 91绿帽人妻-ThePorn| 亚洲日皮| 免费无码毛片一区二区A片小说| 国产一级a毛一级a毛视频在线网站?| 炮友露脸青楼传媒刘颖儿| 99ri精品| 免费69视频| 亚洲日本欧美| 欧美久久久久久久| 亚洲成人少妇老妇a视频在线 | 翔田千里91| 日本在线一级片| 91亚洲国产AⅤ精品一区二区| 人成视频免费观看| 无码在线免费观看视频| 2019国产精品| 爱搞在线观看wwww| 日韩中文字幕电影| 国产乱子伦一区二区三区免看 | 亚洲五月婷婷| 无码人妻在线| 日韩精品一二| 日韩二区| 杨贵妃一级婬片90分钟| 无码观看视频| 免费黄色大片| 影音先锋av资源在线| 日韩wuma| 夜夜嗨老熟女AV一区二区三区 | 99久久久国产| 日韩一级在线视频| 91麻豆精品国产91久久久熟女| 成人无码免费一区二区中文 | 欧美五月婷婷| 久久中文娱乐网| 天天干天天操综合| 在线免费观看黄色小视频| 啪视频网站国产馆| 高清国产mv在线观看| 免费黄色视频网站大全| 日韩和的一区二区| 91免费网站| 新BBWBBWBBWBBW| 久久91人妻无码精品蜜桃HD| av水果派| 人妻中文字幕久久| 日韩欧美一级片| 欧美日色| 青青久久91| 人人看人人摸人人操| 青娱乐亚洲精品| 男女av在线观看| 国产精品一区在线| 婷婷欧美日韩| 婷婷男人天堂| 一级片在线播放| 九九乱伦| 91精品无码一区二区| 婷婷五月天青草| 国产区av| 天天爽天天日| 亚洲美女网站免费观看网址| 99草自拍| 日本草逼| 五月天在线观看| 翔田千里在线观看| 噜噜噜网| 豆花视频在线| 最新无码视频| 亚州高清无码视频| 91社区成人影院| 干日本少妇| 人人操人人操人人| 蜜桃视频网站18| 欧美成人自拍视频| 欧美色视| 99九九久久| 国产午夜激情视频| 北条麻妃一区二区三区-免费免费高清观看 | 成人视频观看| 麻豆性爱| 精品人无码一区二区三区下载| 69pao| 大鸡巴草逼| 夜夜夜夜撸| 欧美一区二区三区激情| 日韩操逼网| 欧美日韩性爱| 日本高清无码在线观看| 欧美日韩一级毛| 国产精品人妻无码一区牛牛影视| 免费看欧美成人A片| 国产a级毛片| 一本道中文字幕| 国产日韩欧美在线播放| 久草不卡| 欧美乱伦一区| 91精品少妇| 亚洲成人高清| www欧美| 日本在线小视频| 欧美第二页| 91大香蕉伊人| 97人人操人人| 亚洲精品少妇| 国产人与禽zoz0性伦| 国产91视频| 18禁在线播放| 豆花成人视频| 久久久久亚洲AV成人网人人软件| av在线免费观看网站| 亚洲插菊花综合网| 人人夜夜人人| 中国免费看片| 久久性爱视频| 在线不卡视频| 91色色色| 高清无码视频在线播放| 嫩小槡BBBB槡BBBB槡漫画| 日韩日日日| 影音先锋色先锋| 日本乱伦网| 口工视频| 久久国产乱子伦精品免费午夜... 国产毛片精品一区二区色欲黄A片 | 嫩苞又嫩又紧AV无码| 国产黄色视频网站在线观看 | 色婷婷成人网| 无码AA| 18精品爽视频| 国产真人无码| 久久久久久无码精品亚洲日韩麻豆 | 色老板在线观看视频| 青青操b| 毛片aaa| 91在线一区| 在线无.码| 99色国产| 在线观看国产一级片| 蜜桃精品一区二区| 亚洲日本无码50p| 狠狠做深爱婷婷久久综合一区| 国产狼友| 91av免费看| 国产区视频| а√天堂中文官网8| 欧美午夜精品久久久久免费视| 一牛影视精品av| 日韩极品视频在线| 色婷婷欧美在线播放内射| 第四色色综合| 精品操逼视频| 日韩日逼网站| av天堂资源| 国产系列第一页| 色射爱| 色呦呦视频在线观看| 免费无码蜜臀在线观看| 久久黄色精品视频| 国产做受91电影| 91成人大片| 操欧美美女| 亚洲色婷婷综合| 国产精品无码专区| 欧美黄色性爱视频| 一区免费视频| 久久久久亚洲AV成人无码电影 | 91在线精品无码秘入口苹果| 91视频观看| 狠狠的操| 久久99精品久久久久婷婷| 你懂的久久| 最美人妖系列国产Ts涵涵| 色欲一区二区三区| 操逼短视频| 国产主播第一页| 久久99网站| 国产AV大片| 欧美AAA视频| 二区视频| 日韩AV在线免费观看| 曰本中文字幕在线视频| 人妻丝袜蕾丝高跟双飞| 日韩AV成人无码久久电影| 婷婷综合欧美| 亚洲天堂男人天堂| 麻豆精品一区| 九一九色国产| 黄色A级毛片| 韩日无码| 777偷窥盗摄00000| 激情视频小说| ww毛片| 91精品久久久久久久久| 成人午夜无码福利视频| 五月丁香五月婷婷| 亚洲无码视频在线观看高清 | 国产最新在线视频| av电影在线免费观看| 黄色一级片在线| www.99国产| 黄片免费视频在线观看| 综合久久久| 麻豆蜜桃wwww精品无码| 丁香花免费高清视频小说完整| 成人午夜婬片A片| 成人性生活片| 久久激情视频| 天天色图| 国产一级a毛一级a做免费的视频| 国产一级性爱| 日韩视频中文| 中文字幕乱码中文字乱码影响大吗| 无码视频免费在线观看| 精品黄色毛片| 亚洲中文无码AV在线| 夜夜夜叫天天天做| 国产精品久久精品| 国产免费一区二区三区| 少妇搡BBBB搡BBB搡毛片| 久久综合无码内射国产| 成人片免费看| 中文字幕亚洲在线观看| www.国产豆花精品区| 国产天堂av| 福利国产在线| 欧美日批| 美女大吊,网站视频| 丝瓜污视频| 欧美va在线| 日本无码视频在线观看| 日本一级片在线播放| 中文资源在线a| 亚洲AV性爱| 日韩黄色在线观看| 永久免费不卡在线观看黄网站| 精品国内视频| 精品国产精品| 欧美国产精品| 国产午夜三级| 少妇高潮喷水视频| www.97色色| 久久艹艹| 日韩无码免费电影| 无码人妻一区二区三区免费n狂飙 性猛交AAAA片免费看蜜桃视频 | 国产欧美一区二区三区四区| 色吟av| 91麻豆精品在线| 日韩无码av电影| 亚洲天堂第一页| 国产精品资源| 中文字幕乱伦| 黄色免费福利视频| 人人艹人人艹| 97人人人人人人| 天天干天天看| 亚洲激情视频网站| 欧美成人一级片| 三级片小说| 天天久久| 亚洲AV无码乱码A片无码沈樵| 黄色视频在线观看免费网站 | 免费无码婬片AAAA片直播| 久久一级片| 99视频+国产日韩欧美| 码人妻免费视频| 日本无码中文字幕| 婷婷A片| 麻豆激情视频| 中文字幕日韩有码| 久久香蕉电影| 日本欧美在线视频| 国产一级AAAAA片免费| 大香蕉伊人免费| 无码内射在线播放| 国产乱子伦视频国产印度| 韩国精品无码一区二区三区18| 国产在线久久久| 国产丝袜自拍| 黄片久久| 在线91网站| 艹逼免费视频| 国产精品自拍视频| 北条麻妃中文字幕旡码| 亚洲国产婷婷香蕉A片| 操杨幂| 日韩一级片网站| 人妻p| 91传媒在线免费观看| 欧美成人性爱图片| 丁香五月综合| 欧洲三级网观看| 高清国产mv在线观看| 国产欧美一| 天堂网在线观看| 一级黄色录像片| 国产黄片一区二区三区| 99精品在线免费观看| 麻豆91精品91久久久停运原因| 日韩一级片免费观看| 欧美中文字幕在线观看| 中国美女一级黄片| 人人操人人撸| 日韩最新无码发布| 欧美日韩东京热| 精品國產一區二區三區久久蜜月| 免费在线观看视频黄| 欧美老妇另类老屁XXX| 亚洲高清无码视频在线播放| 91福利导航| 欧美三级性爱视频| 国产又爽又黄在线看视频| 国产精品秘精东影业| 乱子伦国产精品www| 雾水情缘电影港片| 午夜性爱视频| 日韩免费AV| 99久久婷婷国产综合精品| 高清无码免费在线| A级视频免费观看| 中文在线字幕电视剧免费平台| 鲁鲁鲁鲁鲁鲁鲁777777| 永久免费看片视频| 午夜成人一区二区| 无码av中文字幕| 亚洲欧美日韩不卡| 亚洲视频久久| 日本少妇高潮喷水XXXXXXX| 国产亚洲中文字幕| 精品女同一区二区三区四区外站在线 | 国产免费无码一区二区| 色呦呦视频在线观看| www.狠狠操| 亚洲视频大全| 黄片网站在线观看| 97中文字幕在线| 欧美日本成人网站入口| 成人久久久久一级大黄毛片中国| 国产91白浆四溢| 超碰免费人妻| 天堂视频在线| 99久在线视频| 杨晨晨不雅视频| 日韩美女在线| 福利老湿69| 操骚屄视频| aV无码av天天aV天天爽第一| 日本中文字幕在线视频| 日韩视频中文字幕在线| 中文字幕在线观看视频www| 久久大香蕉精品| 中文字幕国产| WWW久久| 91一区二区在线观看| ww国产| 久久黄色视屏| 无码天堂| 婷婷久久网| 四虎av在线播放| 欧美狠狠操| 日韩无码AV一区二区三区| 久久91| 9l视频自拍蝌蚪9l成人蝌蚪| 国产91免费视频| 日韩综合色| 肏屄视频网| 99热精品免费在线观看| 天天插天天狠天天透| 国产一区二区不卡视频| 成人无码一区| 日韩不卡AV| 免费AV黄色| 丁香五月AV| 激情婷婷网| 四虎色情| 亚洲无码A片在线观看| 国产高清小视频| 影音先锋人妻资源| 特级毛片片A片AAAAAA| 日韩无码av电影| 亚洲性生活| 九九成人电影| 五月天激情四射| 亚洲无码在线观看免费| 国产色无码网站www色视频| 国产成人AV一区二区三区在线观看| 在线观看AV91| 91精品国产综合久久蜜臀使用方法 | 黄片免费视频观看| 久久久久亚洲精品| 日韩精品欧美一区二区三区| 尤物视频在线| 91亚洲在线观看| 少妇大战28厘米黑人| 五月天激情导航| 乱伦一区二区三区| 亚洲小说图片AV在线| 国产成人综合网| 欧美性猛交XXXXⅩXX| 99精品视频北条麻妃国产版| 国产精品TV| 国产精品自拍偷拍| 三级黄,色| 国产日韩欧美综合精品在线观看| 亚洲清高毛无码毛片| 老太色HD色老太HD-百度| 日韩欧美国产成人| 欧美日韩高清| 夜夜骑夜夜| 欧美熟妇BBB搡BBB| 色五月亚洲| 人妻电影亚洲av| 国产黄在线观看| 日韩黄色在线视频| 水蜜桃视频在线播放| 北条麻妃久久视频在线播放| 黄色91| 久久做爱视频| 成人污污视频| 欧美精品无码一区二区| 波多野结衣网址| 日本一级片在线观看| 中国特级毛片| 友田真希一级婬片A片| 欧美色成人免费在线视频| 伊人天天干| 激情五月婷婷丁香| 九一国产在线| 亚洲激情综合视频| 无码一区二区三区四季| 色99999| 天天骑夜夜操| 99热国产在线观看| 欧美成人手机在线观看| 亚洲无码免费视频在线观看| 伊人97| 亚洲精品蜜桃| 激情五月天丁香| 国产无码小视频| 精品91在线视频| 性欧美xxxx| 国产A片精品| 国产中文字幕在线| 欧美一级免费| 先锋影音资源网站| 精品乱子伦一区二区三区在线播放 | 国产精品乱码毛片在线人与| 日本成人电影| 91人妻人人爽人人爽| 国产精品成人影视| 国产av地址| 狠狠狠狠狠狠干| 日韩一区二区视频在线观看| 欧美成人性色欲影院| 加勒比日日综合| 强伦轩一区二区三区四区播放方式| 日皮视频免费在线观看| 淫色淫香综合网| 神马午夜福利影院| 先锋成人av| 偷拍视频图片综合网| 91精品国产一区二区三区四区大| 偷拍92| 亚洲在线| 日韩人妻精品无码| 西西888WWW大胆无码| 成人国产AV| 日韩中文在线视频| 在线观看污网站| 高清成人无码| 亚洲网站在线播放| 黄片大全在线免费观看| 无码9999| 亚洲精品二| 手机在线毛片| 浮力影院av| 国产一级片免费视频| 国产区视频| 自拍偷拍福利视频网站| 欧美性爱XXXX| 亚洲日韩国产AV| 18禁二区| 欧美亚洲成人精品| AAAA毛片视频| 日逼视频| 欧美色成人免费在线视频| 操逼视频免费观看| 日本在线播放| 免费在线观看av| 免费一区二区三区四区| 九九九九精品| 国产一级a毛一级a爰片| 伊人成人在线视频| 亚洲群交| 精品九九九| 欧美操逼视频| 大草AV| 操极品美女| 人人妻人人澡人人爽久久| 美女做爱在线观看| 亚洲福利一区二区| 波多野结衣无码NET,AV| 九九色色| 无码日批| 无码三级午夜久久人妻| 欧美老熟妇BBBBB搡BBB| 狠狠ri| 中文字幕欧美激情| 色悠悠久久综合| 91精品日韩| caopeng97| 特逼视频| 在线无码av| 亚洲天堂免费| 男女啪啪免费| 日韩三级| AV草逼| 国产精品探花熟女| www.蜜桃av|