中文字幕人妻一区二区三区-久久88-中文字幕影院-天天干天天操天天爽-91av免费-色呦呦在线视频-手机在线观看毛片-91高清国产-手机在线看a-香蕉久久久久久-人人精品视频-色偷偷男人天堂-欧美tickle狂笑裸体vk-九月婷婷丁香-伊人影院亚洲

蒙狼科技logo
設(shè)為首頁| 聯(lián)系我們
咨詢熱線: 13917498722
  您的位置: 首頁 > 網(wǎng)站資訊 > php擴(kuò)展與嵌入--資源數(shù)據(jù)類型2

php擴(kuò)展與嵌入--資源數(shù)據(jù)類型2

發(fā)布日期:2017/7/26
在資源變量中存儲(chǔ)的復(fù)雜的數(shù)據(jù)類型通常在初始化時(shí)需要一些內(nèi)存分配,CPU時(shí)間或網(wǎng)絡(luò)通信。但是在請(qǐng)求之間保留類似于數(shù)據(jù)庫連接這種資源,必須要做到持久。資源是否持久是一個(gè)必須要考慮到的因素。
首先看內(nèi)存分配的問題: 在使用php的時(shí)候,偏向使用emalloc因?yàn)樗莔alloc的帶回收的版本。但是持久化的資源必須在請(qǐng)求間都存在。對(duì)于一個(gè)文件句柄類的資源來說,假如要加入一個(gè)存儲(chǔ)文件名的需求,那么必須在頭文件中加入如下的代碼:
typedef struct _php_sample_descriptor_data {
    char *filename;
    FILE *fp;
} php_sample_descriptor_data;
行使這個(gè)結(jié)構(gòu)可以存儲(chǔ)文件名和文件句柄資源,從而能夠在不同的請(qǐng)求之間進(jìn)行共享。
對(duì)應(yīng)的,要在源文件中進(jìn)行響應(yīng)的更改:
static void php_sample_descriptor_dtor( //這個(gè)是進(jìn)行資源回收的回調(diào)函數(shù),定義在資源的初始化處。
zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
    php_sample_descriptor_data *fdata =
      (php_sample_descriptor_data*)rsrc->ptr;
    fclose(fdata->fp);
    efree(fdata->filename);
    efree(fdata);
}
這個(gè)靜態(tài)函數(shù)用來進(jìn)行資源的回收,需要在初始化資源的時(shí)候進(jìn)行指定回調(diào)。
進(jìn)行修改后的文件打開函數(shù),需要增添給資源分配空間的操作:
PHP_FUNCTION(sample_fopen) //修改后的fopen
{
    php_sample_descriptor_data *fdata;
    FILE *fp;
    char *filename, *mode;
    int filename_len, mode_len;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss",
    &filename, &filename_len,
    &mode, &mode_len) == FAILURE) {// 獲取文件名和文件長度 
        RETURN_NULL();
    }
    if (!filename_len  !mode_len) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Invalid filename or mode length");
        RETURN_FALSE;
    }
    fp = fopen(filename, mode);
    if (!fp) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Unable to open %s using mode %s",
      filename, mode);
        RETURN_FALSE;
    }
    fdata = emalloc(sizeof(php_sample_descriptor_data)); //給包含了文件資源和文件名的結(jié)構(gòu)分配空間
    fdata->fp = fp;
    fdata->filename = estrndup(filename, filename_len);
    ZEND_REGISTER_RESOURCE(return_value, fdata,
  le_sample_descriptor); // 注冊(cè)資源
}

對(duì)于文件寫入函數(shù)fwrite同樣需要修改:
PHP_FUNCTION(sample_fwrite)
{
    php_sample_descriptor_data *fdata;
    zval *file_resource;
    char *data;
    int data_len;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs",
  &file_resource, &data, &data_len) == FAILURE ) {
        RETURN_NULL();
    }
    ZEND_FETCH_RESOURCE(fdata, php_sample_descriptor_data*,
        &file_resource, -1,
        PHP_SAMPLE_DESCRIPTOR_RES_NAME, le_sample_descriptor);
    RETURN_LONG(fwrite(data, 1, data_len, fdata->fp));
} 

對(duì)于sample_fclose函數(shù)并不需要改變什么,因?yàn)樗鼪]有操作現(xiàn)實(shí)的資源。下面這個(gè)函數(shù)可以從資源中拿到原本的文件名:
PHP_FUNCTION(sample_fname)
{
    php_sample_descriptor_data *fdata;
    zval *file_resource;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r",
  &file_resource) == FAILURE ) {
        RETURN_NULL();
    }
    ZEND_FETCH_RESOURCE(fdata, php_sample_descriptor_data*,
        &file_resource, -1,
        PHP_SAMPLE_DESCRIPTOR_RES_NAME, le_sample_descriptor);
    RETURN_STRING(fdata->filename, 1);
} 


在完成了內(nèi)存分配之后,因?yàn)楸仨毐3殖志没员仨?strong>延遲析構(gòu):
對(duì)于非持久的資源來說,一旦存放著資源id的變量被unset或fallen out of scope了,那么它們就被從EG(regular_list)中去除掉了。而EG(persistent_list)中使用的索引是鍵值類的,元素在請(qǐng)求的不會(huì)不會(huì)被主動(dòng)的去除掉。只有在zend_hash_del()調(diào)用或線程/進(jìn)程完全關(guān)閉的情況下才會(huì)消弭。 EG(persistent_list)也有dtor方法,但是是zend_register_list_descructors_ex()的第二個(gè)參數(shù)。一般來說,非持久和持久的資源會(huì)被注冊(cè)成兩種類型,有的時(shí)候也可以合二為一。現(xiàn)在在sample.c中添加一個(gè)持久的資源類型。
    static int le_sample_descriptor_persist;
    static void php_sample_descriptor_dtor_persistent(
zend_rsrc_list_entry *rsrc TSRMLS_DC)
{//這是一個(gè)持久化的資源析構(gòu)函數(shù)
    php_sample_descriptor_data *fdata =
      (php_sample_descriptor_data*)rsrc->ptr;
    fclose(fdata->fp);
    pefree(fdata->filename, 1);
    pefree(fdata, 1);
}
PHP_MINIT_FUNCTION(sample)
{
    le_sample_descriptor =     zend_register_list_destructors_ex(
  php_sample_descriptor_dtor, NULL,
  PHP_SAMPLE_DESCRIPTOR_RES_NAME, module_number);
    le_sample_descriptor_persist =
    zend_register_list_destructors_ex(
  NULL, php_sample_descriptor_dtor_persistent,
  PHP_SAMPLE_DESCRIPTOR_RES_NAME, module_number);//注冊(cè)一個(gè)持久化的資源
    return SUCCESS;
} 

下面的這個(gè)fopen函數(shù)就兼容了持久與非持久的兩個(gè)資源類型:
PHP_FUNCTION(sample_fopen)
{
    php_sample_descriptor_data *fdata;
    FILE *fp;
    char *filename, *mode;
    int filename_len, mode_len;
    zend_bool persist = 0;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"ssb",
      &filename, &filename_len, &mode, &mode_len,
      &persist) == FAILURE) {
        RETURN_NULL();
    }
    if (!filename_len  !mode_len) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Invalid filename or mode length");
        RETURN_FALSE;
    }
    fp = fopen(filename, mode);
    if (!fp) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Unable to open %s using mode %s",
      filename, mode);
        RETURN_FALSE;
    }
    if (!persist) {//非持久化的資源
        fdata = emalloc(sizeof(php_sample_descriptor_data));
        fdata->filename = estrndup(filename, filename_len);//這個(gè)做了申請(qǐng)內(nèi)存和賦值兩步操作 
        fdata->fp = fp;
        ZEND_REGISTER_RESOURCE(return_value, fdata,
  le_sample_descriptor);
    } else {//持久化的資源
        list_entry le;
        char *hash_key;
        int hash_key_len;
        fdata =pemalloc(sizeof(php_sample_descriptor_data),1);
        fdata->filename = pemalloc(filename_len + 1, 1);
        memcpy(fdata->filename, filename, filename_len + 1);
        fdata->fp = fp;
        ZEND_REGISTER_RESOURCE(return_value, fdata,
    le_sample_descriptor_persist);

        /* Store a copy in the persistent_list 在persistent_list存儲(chǔ)一份副本 */
        le.type = le_sample_descriptor_persist;
        le.ptr = fdata;
        hash_key_len = spprintf(&hash_key, 0,
      "sample_descriptor:%s:%s", filename, mode);
        zend_hash_update(&EG(persistent_list),
  hash_key, hash_key_len + 1,
  (void*)&le, sizeof(list_entry), NULL);
        efree(hash_key);
    }
} 

對(duì)于非持久化的資源,給定了一個(gè)數(shù)字的索引,并存放在了跟請(qǐng)求依存的list中。 對(duì)于持久化的資源,給定了一個(gè)鍵值類型,這個(gè)hashkey可以在接下來的請(qǐng)求中被重新得到。然后把資源放進(jìn)了persistentlist中。當(dāng)一個(gè)持久的資源out of scope的時(shí)候,EG(regular_list)的析構(gòu)函數(shù)會(huì)為le_sample_descriptro_persist檢查registerlist析構(gòu)。發(fā)現(xiàn)是NULL的話不會(huì)有任何的操作。從而也就保證了持久的資源不會(huì)被釋放掉。當(dāng)資源被從EG(persistent_list)中去除的時(shí)候,要么是線程進(jìn)程結(jié)束了,要么是有心刪除掉了。這時(shí)候就會(huì)去找持久化的析構(gòu)函數(shù)。

資源被申請(qǐng)為持久化的原因就是為了在其他的請(qǐng)求中可以復(fù)用
假如想要復(fù)用持久化的資源,那就一定要用到hash_key,當(dāng)sample_fopen被調(diào)用的時(shí)候,函數(shù)會(huì)行使請(qǐng)求的文件名和模式重新創(chuàng)建hash_key,然后嘗試在persistent_list中找到它。
PHP_FUNCTION(sample_fopen)
{
    php_sample_descriptor_data *fdata;
    FILE *fp;
    char *filename, *mode, *hash_key;
    int filename_len, mode_len, hash_key_len;
    zend_bool persist = 0; //判斷是否持久
    list_entry *existing_file;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"ssb",
      &filename, &filename_len, &mode, &mode_len,
      &persist) == FAILURE) {
        RETURN_NULL();
    }
    if (!filename_len  !mode_len) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Invalid filename or mode length");
        RETURN_FALSE;
    }
    /* 通過獲得一個(gè)hash_key嘗試尋找一個(gè)已經(jīng)打開的文件 */
    hash_key_len = spprintf(&hash_key, 0,
  "sample_descriptor:%s:%s", filename, mode);

    if (zend_hash_find(&EG(persistent_list), hash_key,
  hash_key_len + 1, (void **)&existing_file) == SUCCESS) {
        /* 成功的找到了這個(gè)已經(jīng)打開的文件句柄資源 */
        ZEND_REGISTER_RESOURCE(return_value,
  existing_file->ptr, le_sample_descriptor_persist);
        efree(hash_key);
        return;
    }
    fp = fopen(filename, mode);
    if (!fp) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING,
      "Unable to open %s using mode %s",
      filename, mode);
        RETURN_FALSE;
    }
    if (!persist) {
        fdata = emalloc(sizeof(php_sample_descriptor_data));
        fdata->filename = estrndup(filename, filename_len);
        fdata->fp = fp;
        ZEND_REGISTER_RESOURCE(return_value, fdata,
  le_sample_descriptor);
    } else {
        list_entry le;
        fdata =pemalloc(sizeof(php_sample_descriptor_data),1);
        fdata->filename = pemalloc(filename_len + 1, 1);
        memcpy(data->filename, filename, filename_len + 1);
        fdata->fp = fp;
        ZEND_REGISTER_RESOURCE(return_value, fdata,
    le_sample_descriptor_persist);
        /* Store a copy in the persistent_list */
        le.type = le_sample_descriptor_persist;
        le.ptr = fdata;
        /* hash_key has already been created by now */
        zend_hash_update(&EG(persistent_list),
  hash_key, hash_key_len + 1,
  (void*)&le, sizeof(list_entry), NULL);
    }
    efree(hash_key);
}

注重因?yàn)樗械臄U(kuò)展都使用相同的哈希表單去存儲(chǔ)資源,所以命名很主要。一般都是用擴(kuò)展和資源類型名作為前綴。

檢查資源可用性:
盡管像文件這種資源可以長期打開,但是類似遠(yuǎn)程網(wǎng)絡(luò)資源這種假如在請(qǐng)求之間長期不用的話就有問題。所以在使用一個(gè)persistent資源之前,要先確定可用性。
if (zend_hash_find(&EG(persistent_list), hash_key,
        hash_key_len + 1, (void**)&socket) == SUCCESS) {
    if (php_sample_socket_is_alive(socket->ptr)) {
        ZEND_REGISTER_RESOURCE(return_value,
socket->ptr, le_sample_socket);
        return;
    }
    zend_hash_del(&EG(persistent_list),
        hash_key, hash_key_len + 1); //這里會(huì)去調(diào)用之前注冊(cè)好的析構(gòu)函數(shù)
}













其他相關(guān)文章
  • 網(wǎng)站遷移的那些事
  • 了解網(wǎng)站影響力的不同階段
  • 干貨分享比較火的APP推廣方法
  • 網(wǎng)站建設(shè)基礎(chǔ)知識(shí)之老板們應(yīng)該細(xì)致哪些?
  • 企業(yè)建網(wǎng)站要從這九方面入手
  • 天也網(wǎng)絡(luò)做網(wǎng)站技巧之內(nèi)容原創(chuàng)




  • 企業(yè)網(wǎng)站后臺(tái)使用
    購物網(wǎng)站后臺(tái)使用
    網(wǎng)站產(chǎn)品圖片的處理



    農(nóng)業(yè)銀行支付
    建設(shè)銀行支付
    郵政儲(chǔ)蓄銀行支付



    企業(yè)網(wǎng)站建設(shè)
    整站建設(shè)
    購物網(wǎng)站



    企業(yè)網(wǎng)站建設(shè)建議
    注冊(cè)適合自己的域名
    什么是虛擬主機(jī)




    售前咨詢QQ: 838821345
    售后服務(wù)QQ: 464698733
    應(yīng)急手機(jī):13917498722


    微信掃一掃
    添加24小時(shí)微信客服


    郵箱:lang@MENGL.CN
    地址:上海寶山區(qū)城銀路555弄2號(hào)樓3樓
    ICP備案:滬ICP備12042844號(hào)-3
     滬公網(wǎng)安備:31011402002917號(hào)
    做網(wǎng)站 | 企業(yè)網(wǎng)站建設(shè) | 上海做網(wǎng)站 | 企業(yè)網(wǎng)站制作 | 做網(wǎng)站的公司 | 關(guān)于蒙狼 | 整站建設(shè) | 購物網(wǎng)站 | 企業(yè)網(wǎng)絡(luò)營銷 | 成功案例 | 加盟代理 | 在線訂單
    服務(wù)區(qū)域: 臨港新區(qū)做網(wǎng)站 徐匯做網(wǎng)站 閔行做網(wǎng)站 長寧做網(wǎng)站 虹口做網(wǎng)站 黃浦做網(wǎng)站 盧灣做網(wǎng)站 靜安做網(wǎng)站 浦東做網(wǎng)站 楊浦做網(wǎng)站 普陀做網(wǎng)站 閘北做網(wǎng)站 寶山做網(wǎng)站 嘉定做網(wǎng)站 松江做網(wǎng)站 昆山做網(wǎng)站
    Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.zyjjkqf.com All Rights Reserved
    在线免费看av| 欧美日本一区 | 香蕉成视频人app下载安装 | 风流少妇 | 成年人观看视频 | 国产主播在线观看 | 中文字幕欧美人妻精品一区蜜臀 | 成人精品 | 日韩激情在线 | av天天干 | 日韩第一区 | 白浆在线 | 欧美黑人做爰爽爽爽 | www 在线观看视频 | 女人床技48动态图 | 日韩欧美一级 | 成人福利在线 | 91视频免费| 免费爱爱视频 | 欧美久久久久久久 | 久久久久久91| 在线黄网| 草莓视频黄色 | 69视频在线| 欧美乱码精品一区二区三区 | 午夜秋霞 | 久久在线视频 | 18岁禁网站 | 涩漫天堂| 一区二区精品视频 | 精品视频一区二区三区 | 国产尤物在线观看 | 亚洲精品在线观看视频 | 国产黄色免费看 | 婷婷色综合 | 熟妇人妻中文字幕无码老熟妇 | 欧美高清 | 精品交短篇合集 | 奇米影视首页 | 国产视频一区在线观看 | 91九色在线| 国产激情小视频 | 九色网址 | 欧美草逼视频 | 天天干天天舔 | 久久综合久色欧美综合狠狠 | 亚洲视频第一页 | 午夜精品久久 | 欧美激情一区二区三区 | 黄色免费网站在线观看 | 日韩精品免费一区二区在线观看 | 欧美高清一区二区 | 亚洲三级av | 日韩精品一区在线观看 | 免费成人深夜夜视频 | 性欧美最猛 | 在线观看国产视频 | 成年人观看视频 | 国产一区2区 | 涩漫天堂 | 欧美日韩一二三 | 韩日一区二区 | 国产日韩一区二区 | 丰满少妇av| 黄色片一级 | 日韩电影一区二区三区 | 午夜天堂| 在线步兵区| 国产精品黄色 | 影音先锋制服丝袜 | 中文字幕一区二区三区四区视频 | 韩国精品一区二区 | 精品无码在线观看 | 蜜桃成人无码区免费视频网站 | 女人床技48动态图 | 爱操视频 | 91视频免费在线观看 | 欧美vieox另类极品 | 久久无码人妻精品一区二区三区 | 在线播放你懂的 | 亚洲天堂网在线观看 | 在线免费观看黄 | av午夜 | av青青草| 免费视频一区二区 | 18免费在线观看 | 亚洲国产中文字幕 | 浓精喷进老师黑色丝袜在线观看 | 精品欧美一区二区三区久久久 | 相亲对象是问题学生动漫免费观看 | 麻豆视频免费在线观看 | 久久免费观看视频 | 韩国三级hd中文字幕的背景音乐 | 国产美女自拍视频 | www.国产精品 | www一区二区 | 日韩精品久久久 | 色偷偷噜噜噜亚洲男人 | 在线步兵区| 五月婷婷色 | 日韩在线播放视频 | 黄色国产| 无码人妻熟妇av又粗又大 | 日本一级黄 | 欧美日韩国产电影 | 免费裸体视频 | 欧美乱妇狂野欧美在线视频 | 亚洲成人免费电影 | 久久香蕉网 | 超碰免费观看 | 国产高清在线 | 日本大尺度做爰呻吟 | 免费成人深夜 | 精品日韩一区二区三区 | 亚洲毛片在线 | gogogo日本免费观看电视剧_第17集 | 欧美黄页| 这里只有精品在线观看 | 色综合色综合 | 91久久国产综合久久 | 欧美乱轮 | 亚洲国产精品va在线看黑人 | 一区二区三区毛片 | 成人做爰69片免费观看 | 久久黄色网址 | 精品久久一区二区 | av不卡在线观看 | 亚洲成人中文字幕 | www.精品| 一级免费片 | 亚洲视频在线播放 | 精品久久影院 | 国产在线观看av | 日本国产精品 | 少妇肥臀大白屁股高清 | 日韩精品免费观看 | 亚洲精品一区二区三区不卡 | 在线观看国产视频 | 国产精品视频免费观看 | 中文字幕影院 | 激情综合网五月 | 在线黄色av| 麻豆精品一区二区 | 91视频入口 | 97国产| 一级理论片 | 日韩精品极品视频在线观看免费 | 尤物精品 | 国产做爰高潮呻吟视频 | 亚洲理论片 | 四虎成人网 | 国产91丝袜在线播放 | 免费国产网站 | 成人欧美一区二区三区黑人免费 | 麻豆国产在线 | 亚洲色图五月天 | 蜜臀av一区二区三区 | 午夜18视频在线观看 | 精品爆乳一区二区三区无码av | 91亚洲精品国偷拍自产在线观看 | 岛国精品在线播放 | 国产又粗又猛又黄又爽无遮挡 | 一级片一级片 | 国产麻豆一区二区三区 | 国产一区二区在线观看视频 | 99热这里有精品 | 久久久久久久无码 | 邻家有女4完整版电影观看 国产ts丝袜人妖系列视频 | 国产精品成人无码免费 | 九色影院| 中文字幕亚洲综合 | 欧美专区第一页 | 日韩精品极品视频在线观看免费 | 中文字幕亚洲精品 | 自拍偷拍色图 | 免费网站观看www在线观看 | 婷婷综合久久 | 美女露胸无遮挡 | 久久久久免费视频 | 摸大乳喷奶水www视频 | 久久这里有精品 | 黄色免费在线观看 | 欧美123区| 丁香花电影免费播放电影| 黄色三级大片 | 亚洲精品国产精品国自产观看浪潮 | 国产精品视频在线观看 | 97精品国产97久久久久久免费 | 成人三级在线观看 | 强辱丰满人妻hd中文字幕 | 欧美黄色录像 | 91涩漫成人官网入口 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美久久久久久久 | 日本久久网| 天天看av | 91资源在线观看 | 亚洲精品国产精品国自产观看浪潮 | 免费在线观看av | 国产精品成人无码 | 精品久久一区二区 | 欧美老熟妇又粗又大 | av免费网 | 国产老熟女伦老熟妇露脸 | 一区二区不卡 | 中文字幕第四页 | 97在线免费观看视频 | 久久精品国产亚洲 | 亚洲色图在线观看 | 日韩99 | 亚洲资源网 | 亚洲欧美另类图片 | 国产欧美日韩综合精品一区二区三区 | 日韩一级黄色片 | 日韩欧美国产视频 | 艳母免费在线观看 | 丰满少妇一区二区 | 成人黄色一级片 | 国产成人精品三级麻豆 | 国产欧美一区二区 | 黄色特级片 | 性欧美video另类hd尤物 | 日韩理论片| 成人免费在线播放 | 蜜臀久久99精品久久久久久宅男 | 国产aⅴ | 成人免费视频观看 | 欧美黑白配在线 | 巨茎人妖videos另类 | 动漫玉足吸乳羞免费网站玉足 | 日韩在线视频网站 | 又黄又爽的网站 | 黄色综合网 | 国产全肉乱妇杂乱视频 | 欧美性猛交xxxx乱大交3 | 无码人妻精品一区二区三区温州 | 一区二区三区四区在线 | 成人看片| 国产高清精品软件丝瓜软件 | 琪琪在线视频 | 亚洲精品免费看 | 亚洲三级av | 中国黄色一级片 | 中文字幕精品在线 | 中文字幕一区二区三区四区视频 | 午夜精品视频在线观看 | 久久久久女人精品毛片九一 | 伊人精品在线 | 中文字幕第5页 | 免费一级a毛片夜夜看 | 天天天操| 黄色美女视频网站 | 一本色道久久综合亚洲精品按摩 | 成人v精品蜜桃久一区 | 精品人妻午夜一区二区三区四区 | 国产精品久久久久久亚洲影视 | 中文字幕第5页 | 成人午夜小视频 | 91久久 | 亚洲第十页 | ass亚洲肉体欣赏pics | 久久中文视频 | 欧美日韩一区二区三区四区 | 国产尤物在线 | 日韩三级免费 | 女同一区二区 | 国产精品免费在线 | 精品影片一区二区入口 | 欧美人喂奶吃大乳 | 天天碰天天操 | 性久久久久久 | 男女做爰猛烈高潮描写 | 日本a视频| 国产成人综合网 | 一级片免费在线观看 | www.天天干 | 黄色一及片 | 久久老司机 | 亚洲视频一区二区三区 | 午夜激情小视频 | 亚洲一级二级三级 | gogogo高清在线观看视频 | 欧美三根一起进三p | 色哟哟入口国产精品 | av手机天堂网| 狠狠操av| 中文字幕日韩av | 亚洲综合图区 | 亚洲精品不卡 | 蜜臀一区二区 | 男女h黄动漫啪啪无遮挡软件 | 香蕉视频在线看 | 亚洲av无码乱码在线观看性色 | 天天操天天操天天操 | 无码少妇一区二区三区 | 一区视频 | 婷婷激情四射 | 色妞视频| 欧美精品一区二区在线观看 | 国产黄色av | 伊人一区 | 国产一区免费 | a天堂在线 | 波多野结衣加勒比 | 亚洲精品免费观看 | 亚洲综合免费观看高清完整版 | 五月综合激情 | 国产黄色电影 | 视频一区二区三区在线观看 | 日本黄色录像 | 国产一区二区免费视频 | 美女扒开尿口让男人桶 | 国产国语老龄妇女a片 | 欧美特黄| 在线精品国产 | 国产九九九 | 91视频网 | 日本黄色一级视频 | 色偷偷av| 天天干天天爽 | 91av在线免费观看 | 欧美不卡一区 | 亚洲一区二区中文字幕 | 国产免费无码一区二区 | 国产精品乱码一区二区 | 无码精品一区二区三区在线 | 欧美顶级少妇做爰hd | 天天影视综合 | 久久人妻少妇嫩草av | 少妇又紧又色又爽又刺激视频 | 亚洲自拍偷拍一区 | 69免费视频 | 国产精品自拍一区 | 欧美日韩免费视频 | 欧洲黄色片 | 99人妻碰碰碰久久久久禁片 | 韩国三级在线 | 免费国产视频 | 快色视频| 色一情一区二区三区四区 | 国产精品欧美日韩 | 色婷婷亚洲| 色欲久久久天天天综合网 | 日本一区二区在线播放 |