国产精品成人免费在线_国产免费一区二区三区在线观看_欧美视频在线不卡_久久午夜电影网_亚洲欧美丝袜中文综合_国产精品7777777_人妻激情偷乱频一区二区三区_大地资源第二页在线观看高清版_欧美激情乱人伦一区_亚洲一区在线视频

蒙狼科技logo
設為首頁| 聯系我們
咨詢熱線: 13917498722
  您的位置: 首頁 > 網站資訊 > php擴展與嵌入--資源數據類型2

php擴展與嵌入--資源數據類型2

發布日期:2017/7/26
在資源變量中存儲的復雜的數據類型通常在初始化時需要一些內存分配,CPU時間或網絡通信。但是在請求之間保留類似于數據庫連接這種資源,必須要做到持久。資源是否持久是一個必須要考慮到的因素。
首先看內存分配的問題: 在使用php的時候,偏向使用emalloc因為它是malloc的帶回收的版本。但是持久化的資源必須在請求間都存在。對于一個文件句柄類的資源來說,假如要加入一個存儲文件名的需求,那么必須在頭文件中加入如下的代碼:
typedef struct _php_sample_descriptor_data {
    char *filename;
    FILE *fp;
} php_sample_descriptor_data;
行使這個結構可以存儲文件名和文件句柄資源,從而能夠在不同的請求之間進行共享。
對應的,要在源文件中進行響應的更改:
static void php_sample_descriptor_dtor( //這個是進行資源回收的回調函數,定義在資源的初始化處。
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);
}
這個靜態函數用來進行資源的回收,需要在初始化資源的時候進行指定回調。
進行修改后的文件打開函數,需要增添給資源分配空間的操作:
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)); //給包含了文件資源和文件名的結構分配空間
    fdata->fp = fp;
    fdata->filename = estrndup(filename, filename_len);
    ZEND_REGISTER_RESOURCE(return_value, fdata,
  le_sample_descriptor); // 注冊資源
}

對于文件寫入函數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));
} 

對于sample_fclose函數并不需要改變什么,因為它沒有操作現實的資源。下面這個函數可以從資源中拿到原本的文件名:
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);
} 


在完成了內存分配之后,因為必須保持持久化,所以必須延遲析構
對于非持久的資源來說,一旦存放著資源id的變量被unset或fallen out of scope了,那么它們就被從EG(regular_list)中去除掉了。而EG(persistent_list)中使用的索引是鍵值類的,元素在請求的不會不會被主動的去除掉。只有在zend_hash_del()調用或線程/進程完全關閉的情況下才會消弭。 EG(persistent_list)也有dtor方法,但是是zend_register_list_descructors_ex()的第二個參數。一般來說,非持久和持久的資源會被注冊成兩種類型,有的時候也可以合二為一。現在在sample.c中添加一個持久的資源類型。
    static int le_sample_descriptor_persist;
    static void php_sample_descriptor_dtor_persistent(
zend_rsrc_list_entry *rsrc TSRMLS_DC)
{//這是一個持久化的資源析構函數
    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);//注冊一個持久化的資源
    return SUCCESS;
} 

下面的這個fopen函數就兼容了持久與非持久的兩個資源類型:
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);//這個做了申請內存和賦值兩步操作 
        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存儲一份副本 */
        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);
    }
} 

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

資源被申請為持久化的原因就是為了在其他的請求中可以復用
假如想要復用持久化的資源,那就一定要用到hash_key,當sample_fopen被調用的時候,函數會行使請求的文件名和模式重新創建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;
    }
    /* 通過獲得一個hash_key嘗試尋找一個已經打開的文件 */
    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) {
        /* 成功的找到了這個已經打開的文件句柄資源 */
        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);
}

注重因為所有的擴展都使用相同的哈希表單去存儲資源,所以命名很主要。一般都是用擴展和資源類型名作為前綴。

檢查資源可用性:
盡管像文件這種資源可以長期打開,但是類似遠程網絡資源這種假如在請求之間長期不用的話就有問題。所以在使用一個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); //這里會去調用之前注冊好的析構函數
}













其他相關文章
  • 網站遷移的那些事
  • 了解網站影響力的不同階段
  • 干貨分享比較火的APP推廣方法
  • 網站建設基礎知識之老板們應該細致哪些?
  • 企業建網站要從這九方面入手
  • 天也網絡做網站技巧之內容原創




  • 企業網站后臺使用
    購物網站后臺使用
    網站產品圖片的處理



    農業銀行支付
    建設銀行支付
    郵政儲蓄銀行支付



    企業網站建設
    整站建設
    購物網站



    企業網站建設建議
    注冊適合自己的域名
    什么是虛擬主機




    售前咨詢QQ: 838821345
    售后服務QQ: 464698733
    應急手機:13917498722


    微信掃一掃
    添加24小時微信客服


    郵箱:lang@MENGL.CN
    地址:上海寶山區城銀路555弄2號樓3樓
    ICP備案:滬ICP備12042844號-3
     滬公網安備:31011402002917號
    做網站 | 企業網站建設 | 上海做網站 | 企業網站制作 | 做網站的公司 | 關于蒙狼 | 整站建設 | 購物網站 | 企業網絡營銷 | 成功案例 | 加盟代理 | 在線訂單
    服務區域: 臨港新區做網站 徐匯做網站 閔行做網站 長寧做網站 虹口做網站 黃浦做網站 盧灣做網站 靜安做網站 浦東做網站 楊浦做網站 普陀做網站 閘北做網站 寶山做網站 嘉定做網站 松江做網站 昆山做網站
    Copyright 2012-2025 上海蒙狼網絡科技有限公司 www.coprosud.com All Rights Reserved
    91丨九色丨尤物| 亚洲韩国青草视频| 久久精品首页| 毛茸茸多毛bbb毛多视频| 99精彩视频| 日韩欧美在线综合网| 国产一区二三区| 51精品免费网站| 国产又大又长又粗又黄| 久久人人爽人人爽爽久久| 国产精品另类一区| 欧美亚洲第一区| 极品美女销魂一区二区三区 | 日韩欧美国产中文字幕| 五月婷婷深深爱| 免费在线观看你懂的| 久99久在线| 国产一区二区成人| 亚洲欧洲日产国码二区| 国产欧美久久久精品免费| 亚洲天堂一区二区在线观看| 51国偷自产一区二区三区| 欧美mv日韩mv国产网站app| 成人一区二区视频| 午夜婷婷在线观看| 中文字幕 日韩 欧美| 91精品综合久久| 日韩国产在线播放| 自拍偷拍欧美激情| 天天干视频在线| 91成人精品一区二区| 一本色道久久99精品综合| 欧美日韩国产123| 色视频成人在线观看免| 九九在线精品视频| 一级免费在线观看| 人人爽人人爽av| 久久婷婷开心| 久久成人这里只有精品| 婷婷综合另类小说色区| 伊人激情综合网| 波多野结衣在线一区| 国产主播第一页| 91aaa精品| 欧美一区1区三区3区公司| 精品久久久91| 色狠狠综合天天综合综合| 狠狠色狠狠色综合| 中文字幕精品视频在线观看| 四虎国产精品免费| 神马影院午夜我不卡影院| 久久久久亚洲精品成人网小说| 欧美在线一区二区三区| 99视频精品在线| 国产又粗又长视频| 无码少妇一区二区| 色欲av无码一区二区人妻| 147欧美人体大胆444| 国产午夜精品全部视频播放| 五月激情综合网| 国产凹凸在线观看一区二区| 中文字幕在线观看视频一区| 免费黄色在线视频| 成年人午夜视频在线观看| 91色视频在线观看| 波霸ol色综合久久| 欧美日韩视频不卡| 国产喷白浆一区二区三区| 日韩一级片免费观看| 久热这里有精品| 青娱乐精品在线| 杨幂一区欧美专区| 国产日韩欧美视频| 色偷偷av亚洲男人的天堂| 日本大香伊一区二区三区| 99久久婷婷国产| 亚洲乱熟女一区二区| 国产成人综合在线视频| 婷婷中文字幕在线观看| 亚洲一区在线免费| 国产日韩专区在线| 日韩亚洲国产中文字幕| 在线播放91灌醉迷j高跟美女| 国产片一区二区| 免费人成黄页网站在线一区二区 | 亚洲最大的成人av| 国产精品亚洲人在线观看| 国产精品一级视频| 四虎免费在线视频| 在线中文字日产幕| 缅甸午夜性猛交xxxx| 国产精品久久亚洲7777| 97婷婷涩涩精品一区| 亚洲精品v欧美精品v日韩精品 | 欧美日韩国产高清一区二区| 欧美极品另类videosde| 青青草97国产精品免费观看 | 欧美一区二区三区电影| 亚洲激情男女视频| av电影在线观看一区| 天堂中文在线看| 天天干在线播放| av黄色在线免费观看| 一道本视频在线观看| 一本—道久久a久久精品蜜桃| 成人在线小视频| 久久成人免费视频| 日韩av在线导航| 91成人网在线| 亚洲激情在线激情| 91香蕉国产在线观看软件| 日韩电影一区二区三区四区| 亚洲一区二区影视| 久久亚洲av午夜福利精品一区| 欧产日产国产精品98| 97xxxxx| 亚洲欧洲精品在线| 国产精品日韩一区二区免费视频| 欧美亚洲成人xxx| 日韩一区二区三区在线播放| 精品国产不卡一区二区三区| 欧美性猛交xxxx黑人猛交| 欧美国产日产图区| 成人午夜激情视频| 日韩国产高清在线| 亚洲成人一级片| 波多野结衣一二区| 日韩欧美性视频| 国产不卡在线观看视频| 亚洲麻豆一区二区三区| 亚洲国产高清av| 欧美日韩成人免费视频| 亚洲在线欧美| 欧美成人一区二区在线| 99在线视频免费观看| 国产激情999| 久久久在线免费观看| 在线观看欧美www| 亚洲二区中文字幕| 欧美一区二区播放| 欧美日韩中文精品| 色综合色综合色综合色综合色综合 | 成人午夜电影免费在线观看| 国产精品久久久久久久av电影| 久精品免费视频| 最新日韩中文字幕| 亚洲老板91色精品久久| 精品久久国产老人久久综合| 精品视频在线免费看| 欧美日韩免费观看中文| 一区二区理论电影在线观看| 国产精品国产自产拍高清av| 国产人成一区二区三区影院| 成人av在线播放网站| 狠狠色狠狠色综合| 精品一区二区免费视频| 日韩国产在线一| 久久精品一区二区国产| 久久激情一区| 无码精品一区二区三区在线| 亚洲av无码专区在线| 国产免费不卡视频| 99在线观看精品视频| 国产精品伦一区二区三区| 国产偷人爽久久久久久老妇app| 欧美日韩精品区| 亚洲国产精一区二区三区性色| 欧美成人精品欧美一级| 免费视频一二三区| 精品无码人妻一区二区三区品| 国产成人av免费在线观看| 中文字幕精品亚洲| 黑人と日本人の交わりビデオ| 美国黑人一级大黄| 国产不卡在线观看视频| 国产馆在线观看| 亚洲欧洲午夜一线一品| 亚洲va中文字幕| 亚洲国产成人tv| 午夜精品福利一区二区蜜股av | 最近中文字幕一区二区| 在线免费视频a| 9l视频白拍9色9l视频| 亚洲精品怡红院| 2025韩国理伦片在线观看| 99sesese| 亚洲精品一区二区18漫画| 亚洲视频天天射| yjizz视频| 一卡二卡三卡四卡| 无码少妇精品一区二区免费动态| 人成免费在线视频| 无码人妻精品一区二区三区夜夜嗨| 老女人性淫交视频| 日韩精品视频免费看| 免费看一级视频| 在线视频欧美亚洲| 午夜精品久久久久久久96蜜桃| 人妻一区二区三区免费| 久久午夜视频| 国产精品自拍三区| 91老司机福利 在线| 国产日本亚洲高清| 亚洲精选在线视频| 懂色av一区二区三区| 欧美三级中文字幕| 欧美成人一区二区三区在线观看 | 18视频在线观看娇喘| 精品人妻大屁股白浆无码| 久草青青在线观看| 亚洲一二区在线观看| 中文字幕99页| 纪美影视在线观看电视版使用方法| 四虎精品免费视频| 天天干天天干天天| 精品久久久中文字幕人妻| 午夜影院免费视频| 国产精品自拍三区| 国产欧美日韩综合| 亚洲国产日韩一区二区| 在线中文字幕不卡| 精品粉嫩超白一线天av| 中文字幕亚洲一区在线观看 | 一级做a免费视频| 午夜剧场免费看| 潮喷失禁大喷水aⅴ无码| 国产一级免费av| 亚洲天堂手机版| 久久久久久久欧美精品| 国产精一区二区三区| 久久久久国产成人精品亚洲午夜| 亚洲精品精品亚洲| 欧美日韩国产a| 亚洲精品一区在线观看香蕉| 欧美成人全部免费| 国产精品一区二区三区久久久| 黄色91av| a级免费在线观看| 第一区免费在线观看| 亚洲精品乱码久久久久久久久久久久| 久久综合色综合| 91国内精品视频| 欧美96一区二区免费视频| av中文字幕不卡| 一区二区欧美在线观看| 欧美浪妇xxxx高跟鞋交| 伊人精品在线观看| 国产精品久久久久久久久免费| 久久99精品久久久久久青青日本| 国产精品国产三级国产专区51| 欧美美女性视频| 国产又粗又长免费视频| 亚洲av综合一区| 日韩av电影一区| 中文字幕国产一区| 欧美图区在线视频| 一区二区av在线| 国产精品久久久久久亚洲影视| 奇米精品在线| 99视频在线免费| 一级黄色片网址| 亚洲男人天堂网址| 免费成人在线网站| 国产精品久久久久影院| 欧美天堂一区二区三区| 色偷偷av一区二区三区| 成人福利网站在线观看11| 一区二区三区四区视频在线观看| 美女黄色片视频| 色欲AV无码精品一区二区久久| 久久影视中文字幕| 另类小说综合欧美亚洲| 自拍偷拍国产精品| 精品国产三级a在线观看| 久久久久女教师免费一区| 国产欧美日韩一区二区三区| 国产精品成人久久电影| 精品国产av色一区二区深夜久久| 99视频在线看| 日精品一区二区三区| 国产欧美中文在线| 欧美另类一区二区三区| 欧美大胆a视频| 国产一区自拍视频| 密臀av一区二区三区| 精品伦精品一区二区三区视频密桃| 国产一区二区在线不卡| 国产91精品入口| 日韩欧美精品免费在线| 日韩视频中文字幕| 国产精品一区二区三区在线| 欧美 日韩 国产 高清| 一区二区精品免费| 国产色片在线观看| 91网站视频在线观看| 欧美三级韩国三级日本一级| 久久中文精品视频| 九九九久久久| 亚洲这里只有精品| 国产在线免费视频| 男女男精品网站| 亚洲v精品v日韩v欧美v专区| 国产亚洲欧美日韩一区二区| 91在线视频免费| 欧美国产激情视频| 精品国产大片大片大片| 欧美视频久久久| 国产精品久久国产精麻豆99网站| 亚洲精品一区二区三区在线观看| 国产精品久久久久久久av大片| 99久久99久久精品| 国产真实乱人偷精品人妻| 国产三级自拍视频| 国产蜜臀97一区二区三区| 日韩欧美国产综合在线一区二区三区| 日本不卡高字幕在线2019| 三年中文高清在线观看第6集| 黄色网址在线视频| 99热这里只有精品3| 久久人人爽人人爽| 日韩免费一区二区| 国产日韩精品视频| 日韩 欧美 高清| 国产精品美女毛片真酒店| 看片的网站亚洲| 欧美午夜xxx| 久久久久久尹人网香蕉| 自拍偷拍99| 高清国产在线观看| 视频一区在线播放| 精品久久久久久国产91| 欧美精品免费播放| 一本色道久久综合亚洲精品婷婷| 粉嫩av蜜桃av蜜臀av| 黄色一级a毛片| 一区二区三区四区在线播放| 在线丨暗呦小u女国产精品| 国产原创精品| 亚洲精品乱码久久久久久蜜桃图片| 国产精品一区二区三区在线免费观看| 久久久99精品免费观看不卡| 亚洲国产免费av| 国产精品一码二码三码在线| 久久6免费视频| 一区二区三区www污污污网站| 国产女同性恋一区二区| 亚洲日本aⅴ片在线观看香蕉| 好吊妞www.84com只有这里才有精品 | 成人国内精品久久久久一区| 亚洲 中文字幕 日韩 无码| 制服.丝袜.亚洲.中文.综合懂色| 成人精品鲁一区一区二区| 日韩欧美资源站| 91在线观看网站| 能看毛片的网站| 亚洲第一天堂网| 亚洲高清一区二区三区| 欧美国产日韩中文字幕在线| 中国 免费 av| 日韩a级片在线观看 | 亚洲日穴在线视频| 美乳少妇欧美精品| 97在线免费视频观看| 18岁成人毛片| 成人国产精品免费观看视频| 亚洲电影第1页| 久久精品中文字幕一区二区三区| 中文字幕在线观看网址| 少妇一区二区三区四区| 高跟丝袜欧美一区| 国产z一区二区三区| 欧美黄色一级片视频| 久久久久久亚洲av无码专区| 国产精品无人区| 久久九九免费视频| 日本免费a视频| 成人毛片在线播放| 国产精品视频一区二区三区不卡| 日韩中文字幕在线观看| 小泽玛利亚av在线| 久久免费小视频| 久久综合中文字幕| 中文字幕亚洲一区| 伊人再见免费在线观看高清版| 国产亚洲精品久久久久久打不开| 91亚洲精华国产精华精华液| 亚洲女成人图区| 亚洲精品一区二| 青青青在线视频| 91美女蜜桃在线| 中文字幕亚洲欧美日韩在线不卡| 黄瓜视频免费观看在线观看www| 久久精品一区二区三| 久久午夜羞羞影院免费观看| 最近2019中文字幕mv免费看| 国产一区二区三区播放| 男人午夜免费视频| 亚洲精品乱码久久久久久久久| 992tv成人免费影院| 天天爽天天爽夜夜爽| www.爱爱.com| 欧美综合视频在线观看| 91久久极品少妇xxxxⅹ软件 | 一本色道久久88综合亚洲精品ⅰ| 四虎影院一区二区| 亚洲免费在线视频观看| 亚洲精品国产第一综合99久久| 欧美在线国产精品| 日韩欧美中文视频| 日本欧美一区二区三区| 精品国产电影一区二区| 亚洲国产欧洲综合997久久| 日本一区二区不卡在线| 国产精品久久久久影院亚瑟| 91精品国产高清自在线| 亚洲黄色片免费看| 日本欧美一区二区| 亚洲精品按摩视频| 可以在线看黄的网站| 国产一级片毛片| 亚洲制服欧美中文字幕中文字幕| 国产精品久久9| 国产老熟女伦老熟妇露脸| 国产一区不卡在线| 在线观看亚洲视频| 俄罗斯av网站| 粉嫩av一区二区夜夜嗨| 91麻豆精品国产91久久久使用方法| 欧美日韩一区在线视频| 精品午夜福利视频| 一个色妞综合视频在线观看| 国产精品欧美一区二区三区奶水| 久久国产精品影院| av在线综合网| 国产最新精品视频| 亚洲一级片免费观看| 久久精品av麻豆的观看方式| 亚洲男人天堂九九视频| 亚洲午夜精品久久久久久人妖| 午夜精品久久久久久久第一页按摩| 欧美日韩情趣电影| 翔田千里亚洲一二三区| 天天操夜夜操视频| 欧美性猛交xxxx乱大交| 国产欧美日韩一区| 国产无码精品久久久| 亚洲午夜久久久久久久久久久| 91精品一区二区| 婷婷激情四射网| 亚洲男人天堂一区| 91亚洲精品久久久| 一级性生活免费视频| 国产精品国产精品国产专区不片| 国产精品69久久| 黄色片网站免费| 国产精品不卡一区| 91精品久久久久久久久久| 色撸撸在线视频| 亚洲女女做受ⅹxx高潮| 91pron在线| 久久99久久98精品免观看软件| 亚洲制服丝袜av| 久久国产精品久久精品国产| 久久午夜免费视频| 欧美在线一区二区| 亚洲美女自拍偷拍| 国产三区在线播放| 亚洲成人a**站| 看av免费毛片手机播放| 久久精品官网| 日韩在线欧美在线国产在线| xxx国产在线观看| 国产精品资源站在线| 欧美激情亚洲另类| 亚洲熟女一区二区| 久久精品一区二区三区不卡牛牛| 国产精品成久久久久三级| eeuss中文字幕| 亚洲一区二区三区在线| 国产在线精品一区| 无码人妻丰满熟妇区bbbbxxxx| 欧美日韩一级视频| 久久观看最新视频| 亚洲欧洲成人在线| 最近中文字幕mv在线一区二区三区四区 | 欧美xxxx做受欧美.88| 成人一区二区三区仙踪林| 99久久99久久精品国产片果冻| 国产成人福利网站| 欧美爱爱免费视频| 懂色av中文一区二区三区天美| 日韩精品国内| 精品人妻无码一区二区三区蜜桃一| 亚洲国模精品一区| 中文字幕 日韩 欧美| 不卡视频免费播放| 国产精品成熟老女人| 国产精品三区在线观看| 欧美日韩另类视频| 日韩第一页在线观看| 午夜在线视频观看| 日韩亚洲综合在线| 少妇户外露出[11p]| 中文字幕一区二区三区不卡在线 | 九九视频精品免费| 国内精品久久久久伊人av| 四季av中文字幕| 精品久久久精品| 国产卡一卡二在线| 亚洲 美腿 欧美 偷拍| 精品国偷自产在线视频99| 日韩免费高清一区二区| 亚洲视频一区二区在线| 欧美一区1区三区3区公司| 性色av蜜臀av| www国产亚洲精品久久网站| 艳妇乳肉亭妇荡乳av| 亚洲免费观看高清完整版在线| 欧美亚洲免费高清在线观看| 国产高清精品软件丝瓜软件| 亚洲欧美一区二区精品久久久| 蜜桃视频无码区在线观看| 国产精品免费网站在线观看| 国产在线观看一区| 精品黑人一区二区三区国语馆| 最新国产精品亚洲| 九色porny自拍视频| 精品电影在线观看| 五月天在线免费视频| 日韩电影一区二区三区四区| 国内精品国产三级国产在线专 | 91久久精品国产91性色69| 亚洲国产又黄又爽女人高潮的| 国产一级片中文字幕| 国产精品久久午夜| 少妇精品久久久久久久久久| 久久久久国产一区二区| 456亚洲影院| 精品91久久久| 日韩精品欧美国产精品忘忧草| 中文字幕18页| 亚洲国产中文字幕| 欧美极品少妇无套实战| 国产精品中文字幕一区二区三区| 国产三级精品网站| 国产孕妇孕交大片孕| 日韩视频免费在线观看| 性爱在线免费视频| 欧美人牲a欧美精品| 亚洲xxxx2d动漫1| 国产精品区一区二区三| 日韩欧美一区二区三区四区| 日韩电影在线观看一区| 国产成人亚洲精品| 亚洲天堂视频在线播放| 亚洲网站在线播放| 亚洲黄色网址大全| 在线电影国产精品| 波多野结衣在线免费观看| 亚洲日穴在线视频| 超碰在线免费观看97| 国产成人a级片| 国产欧美一区二区在线播放| 人妻少妇一区二区三区| 欧美最近摘花xxxx摘花| 亚洲欧美另类在线视频| 中文字幕日韩av综合精品| jizzjizzjizz国产| 日韩视频一区二区三区在线播放 | 日韩在线三区| 久久99在线观看| 91麻豆蜜桃| 手机在线不卡av| 国产成人精品久久二区二区| 波多野结衣在线电影| 久久国产精品网站| 国产一级视频在线观看| 精品一区二区三区三区| 中文字幕网站在线观看| 欧美日韩高清一区二区| 女人扒开双腿让男人捅| 欧美日韩色婷婷| 少妇黄色一级片| 亚洲精品福利视频网站| 777精品久无码人妻蜜桃| 中文字幕精品一区二区三区精品| 强开小嫩苞一区二区三区网站| 99这里都是精品| 亚洲欧美久久234| 成人精品高清在线| 日韩中文一区| 成人动漫中文字幕| 日韩亚洲视频| 粉嫩嫩av羞羞动漫久久久 | 日韩精品在线免费看| 中文国产亚洲喷潮| 久久久久免费看| 色系列之999| 成人在线视频网址| 色婷婷精品久久二区二区密|