国产精品成人免费在线_国产免费一区二区三区在线观看_欧美视频在线不卡_久久午夜电影网_亚洲欧美丝袜中文综合_国产精品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 上海蒙狼網絡科技有限公司 m.coprosud.com All Rights Reserved
    国产精品每日更新在线播放网址| 欧美成人免费视频| 26uuu国产电影一区二区| 欧美精品入口蜜桃| 女人被男人躁得好爽免费视频| 久久久国产成人精品| 综合亚洲深深色噜噜狠狠网站| 亚洲天堂视频在线| 中文字幕精品一区二区三区在线| 91久久精品国产91久久性色| 日韩欧美一级在线播放| 成人精品视频一区二区三区| 在线观看亚洲天堂| 午夜激情福利在线| 成人精品在线视频| 精品女同一区二区| 久久精品一区二区三区不卡| 中文字幕一区二区三区人妻四季| 欧美一级特黄aaa| 91九色在线观看| 日韩成人在线视频| 国产精品丝袜一区| 国产成人a人亚洲精品无码| 91亚洲一线产区二线产区| 国产精品久久久对白| 日韩成人激情在线| 国产精品九色蝌蚪自拍| 性猛交xxxx乱大交孕妇印度| 日本aaa视频| 手机福利在线视频| 88xx成人精品| 在线电影欧美成精品| 不卡一卡二卡三乱码免费网站| av资源免费观看| 永久免费的av网站| 国产在线精品一区二区三区》| 亚洲欧美日韩中文在线制服| 亚洲品质自拍视频网站| 免费日韩av| 精品人妻伦九区久久aaa片| 黄色一级在线视频| 成人羞羞国产免费| 亚洲久久久久久久久久久| 亚洲婷婷综合久久一本伊一区| 日本加勒比一区| 懂色av蜜桃av| 精品国产免费av| 亚洲a级在线播放观看| 亚洲天天在线日亚洲洲精| 亚洲精品国产精华液| 日韩二区三区四区| 国产成人无码精品久在线观看| 在线不卡一区二区三区| 韩国成人av| 欧美成人免费全部观看天天性色| 在线观看免费一区| 91视频观看视频| www.久久久久久| 国产又黄又粗又猛又爽的| 亚洲中文字幕无码专区| 999在线观看免费大全电视剧| 伊人伊成久久人综合网小说| 欧美午夜www高清视频| 懂色一区二区三区免费观看| 国产一区二区三区四区视频| 久久丫精品忘忧草西安产品| 亚洲 高清 成人 动漫| 51精品国产人成在线观看| 色先锋资源久久综合5566| 色婷婷综合激情| 91浏览器在线视频| 无码国产色欲xxxx视频| 精品久久免费视频| www.啪啪.com| 无罩大乳的熟妇正在播放| 99久久精品免费看国产四区| 久久视频在线视频| 91精品国产综合久久久久久漫画 | 亚洲欧洲中文| 国产精品看片资源| 国产一区二区动漫| 欧美性猛片xxxx免费看久爱| 中文字幕的久久| 日本人妖一区二区| 亚洲av综合一区| 韩国一级黄色录像| 超碰在线超碰在线| 成人免费a级片| 国产精品果冻传媒潘| 97国产精品人人爽人人做| 亚洲国产欧美一区| 色欧美乱欧美15图片| 日本一区二区免费在线观看视频| 日本不卡免费在线视频| 亚洲网站在线免费观看| 99热在线观看精品| 无套白嫩进入乌克兰美女| www.日本三级| 免费精品视频一区二区三区| 国产精品久久久久99| 精品国产一区二区三区久久| 日韩欧美国产电影| 福利微拍一区二区| 中文字幕高清不卡| 国产精品香蕉一区二区三区| 日本黄色大片视频| 波多野结衣在线电影| 国产稀缺精品盗摄盗拍| 中文字幕精品视频在线| 成人中文字幕在线播放| 色一情一乱一伦一区二区三区| 国产热re99久久6国产精品| 欧美二区乱c黑人| 日韩精品中文字幕在线| 中文字幕在线欧美| 成人蜜桃视频| 欧美专区中文字幕| 久久精品美女视频网站 | 中文字幕不卡在线视频极品| 欧美一级片在线观看| 精品久久香蕉国产线看观看gif| 日本一区二区在线不卡| 国产成人亚洲综合色影视| 五月天婷婷社区| 一区二区三区播放| 久久精品国产成人av| 国产喷水在线观看| 国产艳俗歌舞表演hd| 亚洲一区二区在线视频观看| 免费观看美女裸体网站| 永久免费在线看片视频| 欧美另类高清视频在线| 国产91视觉| 国产精品日韩在线一区| 97在线视频观看| 久久久精品一区二区| 亚洲久久久久久久久久| 欧美成人a视频| 欧美二区乱c少妇| 色播五月激情综合网| 亚洲一区二区三区视频在线| 国产精品久线在线观看| 久久综合九色综合97_久久久| 国产一区二区不卡在线| 蜜臀久久久久久久| 丝袜亚洲另类欧美| 免费亚洲婷婷| 免费国产精品视频| av网站免费大全| 中文字幕久久熟女蜜桃| 日日摸天天添天天添破| 亚洲国产精品午夜在线观看| 国产精品久久久久久久精| 人成免费在线视频| xxxxx在线观看| 懂色av粉嫩av蜜乳av| 国产chinesehd精品露脸| av噜噜在线观看| 日韩大片一区二区| 日本美女高潮视频| 宅男噜噜噜66国产免费观看| 中国丰满人妻videoshd| 欧美日韩在线视频一区二区三区| 国产高清av在线播放| 精品人妻人人做人人爽| 国产精品自拍合集| 青春草国产视频| 日本一级黄视频| 成人av在线播放观看| www.国产亚洲| 99在线精品免费视频| 999在线观看视频| 国产高清av在线播放| 五十路熟女丰满大屁股| 凹凸国产熟女精品视频| 欧洲av无码放荡人妇网站| 97国产精东麻豆人妻电影| 成人免费毛片网| 久草资源站在线观看| 国产肥臀一区二区福利视频| 黄色免费观看视频网站| 成年人小视频网站| 五月婷婷之综合激情| 我看黄色一级片| 日本超碰在线观看| 爱爱爱爱免费视频| 中文字幕第一页在线视频| 天天干天天曰天天操| 无码人妻丰满熟妇区毛片蜜桃精品| 潘金莲一级淫片aaaaaaa| 激情av中文字幕| 真人bbbbbbbbb毛片| 制服 丝袜 综合 日韩 欧美| 亚洲毛片亚洲毛片亚洲毛片| 成人在线观看免费完整| 国产精品美女毛片真酒店| av大片免费观看| 亚洲综合成人av| 国产露脸无套对白在线播放| 亚洲国产精品视频在线| 亚州男人的天堂| 麻豆视频观看网址久久| 国产一区二区三区高清播放| av在线免费不卡| 欧美—级在线免费片| 成人免费在线视频观看| 亚洲3atv精品一区二区三区| 在线观看日产精品| 日韩一区二区在线观看| 日韩国产在线播放| 日韩亚洲第一页| 久久久久久久久久国产精品| 人体精品一二三区| 成人中文字幕+乱码+中文字幕| 粉嫩高清一区二区三区精品视频| 久久综合伊人77777麻豆| 亚洲综合欧美日韩| 国产 日韩 亚洲 欧美| 美女黄色片视频| 国产人妻精品午夜福利免费| 欧美黄色激情视频| 九九久久免费视频| 一级片在线免费播放| 国精产品一品二品国精品69xx| 久久一二三四| 国产精品一区二区在线观看不卡 | 国产精品午夜一区二区| 成人1区2区3区| 日本va欧美va瓶| fc2成人免费人成在线观看播放| 欧美激情在线观看视频免费| 亚洲国产成人91porn| 欧美日韩国产首页| 日韩av在线精品| 欧美大秀在线观看| 91精品久久久久久久久久另类| 久久艳妇乳肉豪妇荡乳av| 一本大道东京热无码aⅴ| 欧美日韩大尺度| www.男人天堂| 久久机热这里只有精品| 亚洲视频中文字幕在线观看| 日韩电影一区二区三区四区| 91热门视频在线观看| 亚洲黄一区二区三区| 欧美日韩一区二区三区高清| 亚洲精品中文字幕av| 久久露脸国产精品| 97久草视频| 日本丰满大乳奶| 不卡中文字幕在线观看| 日本精品久久久久中文| 午夜久久久久久久久久影院| 少妇精品高潮欲妇又嫩中文字幕| 高潮精品一区videoshd| 亚洲美女一区二区三区| 欧美一区日韩一区| 久久视频在线视频| 91深夜福利视频| 潘金莲一级淫片aaaaa免费看| 伊人影院综合在线| 欧美性猛交xxxx乱大交少妇| 久草视频在线免费| 毛片av一区二区| 国产精品久久久久永久免费观看 | 国产成人av在线播放| 久久99影院| www黄色av| 91视频免费观看网站| 久久国产视频一区| 水野朝阳av一区二区三区| 久久精品网站免费观看| 91成人国产精品| 日韩一区二区福利| 91午夜在线播放| 国产九色porny| 超碰97在线资源站| 亚洲久久在线观看| 免费高清在线一区| 国产精品短视频| 日韩亚洲欧美中文三级| 久久久久亚洲精品成人网小说| 国产精品对白一区二区三区| 国产老熟妇精品观看| 成人免费毛片糖心| 6—12呦国产精品| 成人听书哪个软件好| 午夜久久久久久久久 | 最新天堂在线视频| 亚洲色婷婷一区二区三区| 丰满肥臀噗嗤啊x99av| 99re6这里只有精品视频在线观看| 黄网站色欧美视频| 国产一区二区三区视频免费| 91久久久久久久久久久久久| 精品国偷自产一区二区三区| 亚洲第一成人网站| 亚洲在线观看av| 成人永久免费视频| 一本久久a久久免费精品不卡| 色阁综合伊人av| 国产精品久久久久久久久婷婷| 免费在线激情视频| 三级黄色在线观看| 欧美熟妇乱码在线一区 | 亚洲最大福利网站| 91av资源网| 国产精品国产三级国产传播| 日本黄色大片视频| 中文字幕一区二区三| 亚洲精品福利资源站| 国产精品一二三在线| 和岳每晚弄的高潮嗷嗷叫视频| 免费观看a级片| 精品久久久免费视频| 国产性做久久久久久| 日韩免费观看高清完整版| 日本老师69xxx| 欧美乱做爰xxxⅹ久久久| 精品无码人妻一区二区免费蜜桃| www.综合色| 国产精品免费观看视频| 亚洲经典中文字幕| 亚洲曰本av电影| 久热精品在线播放| 日韩 国产 欧美| 成人黄色小视频在线观看| 欧美精品久久久久久久多人混战 | 手机免费观看av| 母乳一区在线观看| 亚洲妇熟xx妇色黄| 久久精品夜夜夜夜夜久久| 欧洲亚洲一区二区| 亚州av综合色区无码一区| 国产欧美第一页| 国产精品久久久久婷婷| 亚洲欧美福利视频| 黄色91av| www男人天堂| 国产高清不卡视频| 亚洲欧洲日本在线| 色老头一区二区三区| 性欧美videosex高清少妇| 精品人妻一区二区三区香蕉 | 免播放器亚洲| 午夜精品久久久久久久蜜桃app | 国产精品免费观看在线| 国产中文字幕二区| 国产一卡二卡在线播放| 国产福利一区在线观看| 51久久夜色精品国产麻豆| 国产精品久久久久久亚洲调教| 国产精品无码av在线播放| 国产一级特黄a高潮片| 国产成人在线免费观看| 日韩手机在线导航| 亚洲一区二区三区香蕉| a级大片免费看| a级片在线播放| 亚洲精品国产a久久久久久| 久久精品国产亚洲精品2020| 亚洲欧美日韩精品在线| 我想看黄色大片| 久久97超碰国产精品超碰| 91精品欧美久久久久久动漫| 成人在线观看视频网站| 小日子的在线观看免费第8集| 国产一区二区在线不卡| 一区二区三区日韩欧美| 欧美日韩福利在线观看| 黄网站欧美内射| 三级视频在线观看| 中文字幕va一区二区三区| 日韩亚洲成人av在线| www.激情网| 日韩精品成人在线| 久久精子c满五个校花| 在线电影欧美日韩一区二区私密| 亚洲欧美一区二区原创| 极品魔鬼身材女神啪啪精品| 岛国av在线一区| 日韩电影视频免费| 偷拍视频一区二区| 日韩视频中文字幕在线观看| 成人精品国产一区二区4080| 亚洲久久久久久久久久| 偷拍视频一区二区| 免费人成年激情视频在线观看| 99这里都是精品| 国产一区二区动漫| 伊人久久在线观看| 在线能看的av| **欧美大码日韩| 午夜精品久久久99热福利| 狠狠操精品视频| 国产三级伦理片| 精品久久久视频| 成人观看高清在线观看免费| 性活交片大全免费看| 青青国产91久久久久久| 精品久久久久久综合日本欧美| 九九九九九九精品| 国产男女猛烈无遮挡在线喷水| www.久久久久久久久| 伊人激情综合网| 久久综合久久久久| 亚洲一区二区天堂| 日韩欧美在线国产| 亚洲综合日韩在线| 亚洲日本精品视频| 成人一区二区在线观看| 久久精品91久久香蕉加勒比| 怡红院av亚洲一区二区三区h| 中文字幕人妻精品一区| 欧美日韩国产黄| 91嫩草免费看| 激情五月深爱五月| 久久人人爽人人爽| 欧美风情在线观看| 国产成人在线综合| 日韩电影在线观看电影| 亚洲黄色在线观看| 熟女视频一区二区三区| 波多野结衣视频网址| 黑人精品xxx一区一二区| 91超碰在线电影| 青青青手机在线视频| 久久久99久久精品欧美| 韩剧1988免费观看全集| 中文字幕第三区| 精品中文字幕一区二区小辣椒| 亚洲美女性视频| 久久久性生活视频| 亚洲精品久久久久久久久久久久久久| 欧美日韩情趣电影| 日本在线免费观看一区| 中国一级特黄毛片| 亚洲成人av福利| 99久久一区三区四区免费| 日本裸体美女视频| 国产精品网站一区| 国产精品情侣自拍| 性欧美一区二区| 久久日韩精品一区二区五区| 88xx成人精品| 色婷婷免费视频| 99久久精品99国产精品| 久久久久久久国产| caopor在线| 成人国产在线观看| 久久免费视频这里只有精品| 三上悠亚 电影| 国产成人精品影视| 久久91精品国产91久久久| 青青草原播放器| 国产一区二区三区美女| 欧美久久精品午夜青青大伊人| www.色就是色.com| 国内一区二区在线| 美女福利视频一区| 国产精品无码自拍| av在线不卡观看免费观看| 8x海外华人永久免费日韩内陆视频| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 中文字幕一区二区三区最新| 国产精品久久久久久69| 日韩一二三区不卡| av女优在线播放| 久久国产精品久久w女人spa| 亚洲最新av在线网站| 午夜免费高清视频| 国产精品一区二区久久精品爱涩| 九九久久综合网站| a级一a一级在线观看| 久久久美女艺术照精彩视频福利播放| 欧美最近摘花xxxx摘花| 亚洲一区二区三区日韩| 亚洲欧洲在线观看av| 97视频热人人精品| 日韩精品1区2区| 欧美系列一区二区| 国产精品h视频| 狠狠人妻久久久久久综合麻豆| 日韩电影视频免费| 在线观看免费污视频| 国产盗摄女厕一区二区三区| 久久久久久美女| 中文字幕av网址| 亚洲欧洲另类国产综合| 国产精品一区二区av| 波多野结衣在线观看视频| 欧美一区二区三区视频免费播放| 久草视频这里只有精品| 视频一区中文字幕| 欧美成人在线免费视频| 在线免费观看a级片| 国产精品久久久久久亚洲伦| 999热视频| 日韩黄色一级视频| 欧美mv日韩mv国产网站| 激情内射人妻1区2区3区 | 91成品人片a无限观看| 日本污视频网站| 性久久久久久久久| 亚洲永久一区二区三区在线| 囯产精品久久久久久| 日韩中文字幕国产精品| 2一3sex性hd| 国产精品第一页第二页第三页| 国产精品99久久久久久久| 亚洲精品国产无码| 亚洲精品乱码久久久久久按摩观| 15—17女人毛片| 26uuu精品一区二区在线观看| 成人有码在线播放| 无码任你躁久久久久久久| 欧美本精品男人aⅴ天堂| 国产视频一区二区视频| 99国产一区二区三精品乱码| 成人有码在线播放| 久久久久精彩视频| 亚洲欧美制服丝袜| 亚洲精品无码一区二区| 亚洲天堂2014| 丝袜美腿玉足3d专区一区| 免费在线观看成人av| 欧美黑人性生活视频| 日韩欧美123区| 在线不卡的av| 欧美日韩亚洲自拍| 国产色产综合色产在线视频| 久久99九九| 天堂av一区二区三区| 欧美日本黄视频| 欧美人禽zoz0强交| 91精品午夜视频| 亚洲va在线va天堂va偷拍| 中文字幕 久热精品 视频在线 | 蜜臀久久99精品久久久无需会员 | 国产综合成人久久大片91| 国产精品99久久99久久久二8| 国产成人免费观看视频 | 熟妇人妻无乱码中文字幕真矢织江| www.欧美精品一二区| 国产精品日韩一区二区| 超碰在线观看99| 欧美激情中文网| 国产污视频在线看| 亚洲激情视频在线| 亚洲欧美日本一区| 日韩欧美国产黄色| 日本成年人网址| 国产午夜精品福利| 欧洲一区二区日韩在线视频观看免费 | 日日碰狠狠躁久久躁婷婷| 91麻豆精东视频| 免费试看一区| 日韩av电影天堂| 国产精品视频久久久| 国产精品第6页| www.日韩av.com| 神马午夜精品91| 欧美高清hd18日本| 捷克做爰xxxⅹ性视频| 亚洲综合免费观看高清完整版在线| 国产日韩第一页| 国产成人精品午夜视频免费| 99porn视频在线| 日本精品久久久久| 日本伊人精品一区二区三区介绍| 草莓视频18免费观看| 在线看日韩欧美| 免费在线观看黄色小视频| 欧美一区二区精美| 国产精品九九视频| 欧美午夜电影在线播放| 九九热视频免费| 亚洲成人av资源| 男女视频一区二区三区| 国产精品久久久久aaaa樱花| www.男人天堂网| 久久日韩粉嫩一区二区三区| 在线精品亚洲一区二区| 成人中文字幕在线| 日韩免费电影一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品一区视频网站| 日韩精品一二三区| 91超碰rencao97精品| 久色成人在线| 91入口在线观看| 久久先锋影音| 91av免费看| 男人的j进女人的j一区| 国产精品区一区二区三含羞草| 三级欧美韩日大片在线看| 91亚洲一区精品| 日韩制服丝袜先锋影音| 成人午夜电影免费在线观看| 欧美aaaaaa午夜精品|