在具有ip地址的数据库上查找cidr并进行closesd匹配

9udxz4iz  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(183)

对于我的系统,我喜欢做一个小国家的位置检测。所以我找到了这个数据库:https://github.com/datasets/geoip2
有如下值:

network,geoname_id,continent_code,continent_name,country_iso_code,country_name,is_anonymous_proxy,is_satellite_provider
"41.74.160.0/20","49518","AF","Africa","RW","Rwanda","0","0"
"41.77.160.0/22","49518","AF","Africa","RW","Rwanda","0","0"

如果我得到一个ip地址 42.76.160.0 在ipgetenv函数中,我如何使用php&pdo查找这个ip,以匹配数据库中的正确值。
编辑:
与此同时,我找到了一个解决办法:
我将cidr转换为正常的ip地址,并执行如下查找:

SELECT `country_iso_code`, `country_name`
            FROM `GeoIP`
            WHERE inet_aton(network) <= inet_aton(:ipadress)
            ORDER BY inet_aton(network) DESC
            LIMIT 1

在我的服务器上,我得到了额外的约50-75毫秒的内容加载,但这只是我的网站的一小部分(设置一个已经应用inet\u aton的表没有太大区别)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题