PHP解析ip2region库,【黑科技】开源 IP 地址定位库 ip2region,99.9%的准确率

ip2region 是什么?

ip2region 是准确率 99.9% 的 IP 地址定位库,0.0x毫秒级查询,提供了 Java 、 PHP 、C、 Python 、Node.js、Golang、C#、Rust、 Lua 的查询绑定和 Binary、B树、内存三种查询算法!

ip2region 1.9更新内容

1、数据升级至2019/05/02的版本,国外的数据增加了大量城市级别的数据,ip2region.db增长到7MB。

2、开源了ip2region.db的生成程序,目前提供了java语言的实现,在${ip2region_root}/maker目录下,便于对ip2region的研究或者更改自定义生成配置等,后期会提供 C语言 的实现。

ip2region特性

1. 99.9%准确率,定时更新

数据聚合了一些知名ip到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比纯真啥的准确多了。

每次聚合一下数据需要1-2天,会不定时更新。

2. 标准化的数据格式

每条ip数据段都固定了格式:城市Id|国家|区域|省份|城市|ISP

只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。

(请忽略前面的城市Id,个人项目需求)

3. 体积小

生成的 数据库 文件ip2region.db只有1.5M(1.2版本前3.5M)。

4.多查询客户端的支持,0.0x毫秒级别的查询

已经集成的客户端有:java, php, c,python,php扩展,nodejs,golang。

提供了两种查询算法,响应时间如下:

客户端/binary算法/b-tree算法/Memory算法:

java/0.x毫秒/0.x毫秒/0.1x毫秒 (使用RandomAccessFile)

php/0.x毫秒/0.1x毫秒/0.1x毫秒 (php扩展将有更快的速度)

c/0.0x毫秒/0.0x毫秒/0.00x毫秒(b-tree算法基本稳定在0.02x毫秒级别)

python/0.x毫秒/0.1x毫秒/0.1x毫秒

任何客户端b-tree都比binary算法快。

安装使用

1. 配置maven:

地址

org.lionsoul

ip2region

1.7.2

2. nuget安装命令

Install-Package IP2Region

3. 测试程序

java:

cd binding/java

ant all

java -jar ip2region-{version}.jar ./data/ip2region.db

php:

php binding/php/testSearch ./data/ip2region.db

c:

cd binding/c/

gcc -g -O2 testSearch.c ip2region.c

./a.out ../../data/ip2region.db

均会看到如下界面:

initializing B-tree ...

+----------------------------------+

| ip2region test script |

| Author: chenxin619315@gmail.com |

| Type 'quit' to exit program |

+----------------------------------+

ip2region>>

输入ip地址开始测试,第一次会稍微有点慢,在运行命令后面接入binary,memory来尝试对应算法,建议使用b-tree算法,有速度和并发追求的使用memory算法。具体集成请参考不同客户端的测试源码。

其他

全部binding的各个search接口都不是线程安全的实现,不同线程可以通过创建不同的查询对象来使用。

memorySearch接口,在发布对象前进行一次预查询,可以安全用于多线程环境。

开源地址

贡献者

更多精彩内容可以关注“IT实战联盟”公众号哦~~~

image

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值