0

对于我的系统,我喜欢进行小国位置检测。所以我找到了这个数据库: 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"

如果我42.76.160.0从我的 ip getenv 函数中获得一个 ip 地址,我如何使用 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_aton 的表并没有太大区别)

4

0 回答 0