亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

純真ip數據庫查詢的php實現(補充分組查詢)

2024-09-04 11:50:11
字體:
來源:轉載
供稿:網友

原文發表于鳳凰花論壇:http://www.fenghuanghua.com/bbs/viewthread.php?tid=34&extra=page%3D1 有興趣的朋友可以在那里討論。 純真數據庫是國內用的最多的ip-地理信息數據庫,雖然不怎么專業,但是數據蠻全的,數據結構也比較合理。

關于純真數據庫的數據結構,可以看一下lumaqq的文檔,里面有一點說的不太清楚,就是里面的ip和地理信息不是一對一,是多對一,所以ip一般是ip段。查詢的時候是查詢ip地址落在哪個段。

純真數據庫的查詢算法也已經有人實現了:http://www.49028c.com/article/2008/4055.shtml

用的是線性表的二分查詢。

純真數據庫比較大,大約有60萬的記錄,上面的算法基本上可以接受了,平均查詢效率在2ms左右,對于單機程序,完全可以忽略,但是對于并發比較大的系統,比如統計系統,這樣的效率還不夠。

既然數據是線性存儲的,那么就可以采用分段查詢,預先將數據隔成段,查詢時,先找到相應的段,然后進行二分查詢。

二分查詢的平均查找長度是:lg(n+1)-1
那么分塊詢找+二分查詢的平均查找長度就是:(設塊數為N)分塊也進行二分查找,所以查找塊的平均長度是lg(N+1)-1,每塊長度是n/N ,所以最終長度是:lg(N+1)-1 + lg(n/N+1)-1

根據上面的公式,代入n可以算出一個最佳塊數N,也就是最佳查詢時間了。數據量越大,查詢速度越快,數據量比較小的表就沒必要分塊了。

我高數學得不好,不知道對不對。請大蝦指正,另外幫忙算一下6249322條數據的最佳塊數。

修改后的代碼如下:(function separate($count)是我添加的分塊函數,if($separator){}所在部分是二分查找塊)

<?php
/**
* IP 地理位置查詢類
* 增加分塊查詢算法
*
* @author 馬秉堯
* @version 1.5
* @copyright 2005 CoolCode.CN
* @modified by david  blog:blog.iyi.cn bbs:www.fenghuanghua.com
*/
class IpLocation {
    /**
     * QQWry.Dat文件指針
     *
     * @var resource
     */
    var $fp;

    /**
     * 第一條IP記錄的偏移地址
     *
     * @var int
     */
    var $firstip;

    /**
     * 最后一條IP記錄的偏移地址
     *
     * @var int
     */
    var $lastip;

    /**
     * IP記錄的總條數(不包含版本信息記錄)
     *
     * @var int
     */
    var $totalip;

    /**
     * 返回讀取的長整型數
     *
     * @access private
     * @return int
     */
    function getlong() {
        //將讀取的little-endian編碼的4個字節轉化為長整型數
        $result = unpack('Vlong', fread($this->fp, 4));
        return $result['long'];
    }

    /**
     * 返回讀取的3個字節的長整型數
     *
     * @access private
     * @return int
     */
    function getlong3() {
        //將讀取的little-endian編碼的3個字節轉化為長整型數
        $result = unpack('Vlong', fread($this->fp, 3).chr(0));
        return $result['long'];
    }

    /**
     * 返回壓縮后可進行比較的IP地址
     *
     * @access private
     * @param string $ip
     * @return string
     */
    function packip($ip) {
        // 將IP地址轉化為長整型數,如果在PHP5中,IP地址錯誤,則返回False,
        // 這時intval將Flase轉化為整數-1,之后壓縮成big-endian編碼的字符串
        return pack('N', intval($ip));
    }

    /**
     * 返回讀取的字符串
     *
     * @access private
     * @param string $data
     * @return string
     */
    function getstring($data = "") {
        while (ord($char = fread($this->fp, 1)) > 0) {        // 字符串按照C格式保存,以亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲乱码国产乱码精品精天堂| 日本精品久久久久久久| 成人欧美一区二区三区在线| 亚洲少妇中文在线| 日韩在线视频网站| 91深夜福利视频| 欧美最顶级丰满的aⅴ艳星| 欧美美最猛性xxxxxx| 成人在线视频福利| 亚洲国产欧美一区二区三区同亚洲| 欧美电影电视剧在线观看| 亚洲精品一区二三区不卡| 欧美国产精品va在线观看| 亚洲综合av影视| 欧美国产激情18| 91网站在线看| 国产91热爆ts人妖在线| 777777777亚洲妇女| 久久精品99久久香蕉国产色戒| 国产精品在线看| 亚洲美女动态图120秒| 久久久欧美精品| 久久夜色精品亚洲噜噜国产mv| 国产丝袜高跟一区| 中文字幕国产亚洲| 亚洲www在线| 久久精品视频导航| 91久久久久久久| 亚洲欧洲在线看| 国产精品手机播放| 中文字幕国产日韩| 欧美在线观看视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产成人精品久久| 色综合久久久888| 久久人体大胆视频| 欧美日韩亚洲网| 欧美极品少妇全裸体| 欧美日韩在线影院| 久久人人爽国产| 国产精品老女人视频| 国产精品国产三级国产aⅴ9色| 亚洲社区在线观看| 欧美猛交免费看| 国产乱人伦真实精品视频| 国产精品入口免费视频一| 国产精品久久久久免费a∨| 国产精品99久久久久久www| 亚洲在线视频福利| 久久99国产精品自在自在app| 久久久久久久久久久久av| 色一区av在线| 欧洲s码亚洲m码精品一区| 国产精品网站入口| 热久久美女精品天天吊色| 国产美女精品视频免费观看| 亚洲美女av黄| 日本精品视频在线播放| 97香蕉超级碰碰久久免费的优势| 国产成人jvid在线播放| 91中文精品字幕在线视频| 国产欧美一区二区三区四区| 日韩欧美国产中文字幕| 欧美xxxx14xxxxx性爽| 国产精品久久一区主播| 日韩av资源在线播放| 亚洲人成电影网| 亚洲摸下面视频| 久久久久久尹人网香蕉| 国产精品第2页| 久久久99免费视频| 国产成人精品亚洲精品| 国模私拍一区二区三区| 国产精品国产自产拍高清av水多| 久久久极品av| 欧美极品少妇全裸体| 91久久久久久| 日韩免费在线播放| 亚洲最大福利网站| 久久天堂av综合合色| 亚洲午夜激情免费视频| 青青在线视频一区二区三区| 91沈先生作品| 国产欧美一区二区三区视频| 亚洲欧美日韩中文在线| 久久艳片www.17c.com| 欧美精品xxx| 中文字幕亚洲欧美日韩高清| 欧美成人h版在线观看| 永久免费看mv网站入口亚洲| 久久夜色精品国产| 亚洲人成电影网站色…| 亚洲三级av在线| 国产精品中文在线| 亚洲无线码在线一区观看| 日韩电视剧在线观看免费网站| 国产精品99久久久久久久久久久久| 久久久噜噜噜久噜久久| 国产婷婷97碰碰久久人人蜜臀| 久久亚洲影音av资源网| 日韩精品在线影院| 亚洲人a成www在线影院| 国产欧美精品在线播放| 色黄久久久久久| 亚洲综合社区网| 久久视频在线直播| 欧美精品电影在线| 91精品国产综合久久久久久蜜臀| 国产噜噜噜噜久久久久久久久| 欧美亚洲日本网站| 91精品国产综合久久香蕉最新版| 日韩精品中文字幕视频在线| 欧美专区中文字幕| 国产视频观看一区| 日本欧美爱爱爱| 日本精品一区二区三区在线| 久久久久99精品久久久久| 九九精品在线播放| 亚洲影院高清在线| 国产精品久久久一区| 国产亚洲欧美另类中文| 日韩在线免费视频观看| 欧美激情视频播放| 欧美日韩国产精品一区| 一区二区亚洲欧洲国产日韩| 色婷婷综合久久久久中文字幕1| 午夜免费在线观看精品视频| 日本亚洲欧洲色α| 亚洲第一二三四五区| 欧美电影院免费观看| 亚洲无亚洲人成网站77777| 国产精品久久久久久久久久久不卡| 日韩一区二区福利| 成人免费淫片aa视频免费| 亚洲欧洲免费视频| 影音先锋欧美精品| 国产91精品久久久| 欧美黑人国产人伦爽爽爽| 欧美激情综合亚洲一二区| 国产精品第8页| 九九综合九九综合| 亚洲电影免费观看高清完整版| 欧美肥臀大乳一区二区免费视频| 亚洲jizzjizz日本少妇| 欧美激情亚洲另类| 国产主播喷水一区二区| 亚洲综合一区二区不卡| 日韩亚洲欧美中文在线| 中文字幕综合在线| 日韩欧美999| 成人久久一区二区三区| 国产精品美女在线观看| 国产精品美女午夜av| 国产精品狠色婷| 日韩中文在线中文网在线观看| 欧美激情精品久久久久久蜜臀| 国产精品久久久久久超碰| 久久精品国产v日韩v亚洲| 日韩电影大全免费观看2023年上| 亚洲成人黄色在线| 精品无人区乱码1区2区3区在线| 亚洲经典中文字幕| 久久中文字幕一区| 色偷偷av一区二区三区|