ayesh / geo-ip
基于Maxmind Lite数据库的快速IP到国家查找,无需扩展或二进制数据库
Requires
- php: ^7.4 || ^8.0
- ayesh/geo-ip-database: ^1.0.0
README
快速IP地址到国家代码查找 - 无扩展,自动更新和快速JSON树查找
介绍
这是一个PHP包,用于查找给定IP地址的国家(支持IPv4,IPv6正在开发中)。
这个库注重性能和简单性,以略微降低精度为代价。它旨在为给定的IP地址返回ISO国家代码,并且做得很好。它不提供精确的位置(如地区或城市),这是设计上的选择。
这个库使用Ayesh/Geo-IP-Database,这是一个自动仓库,每周最多发布一次数据库更新。数据库完全是一个标记JSON文件列表,将IP范围映射到国家代码。
这个库不需要存储二进制数据文件或HTTP请求,因此速度非常快。
请注意,数据可能没有完整的数据库准确。在表单中自动填充国家字段或将用户重定向到区域站点是一些理想用例。将用户精确位置定位到找到区域内的热单推得太过了。
自动更新
这个库依赖于Ayesh/Geo-IP-Database包,它提供JSON文件列表。
对ayesh/geo-ip-database
包的自动更新意味着对数据库的更新。它们的格式为v1.0.YYYYMMDD
。
偶尔运行composer update
将自动触发数据库更新。
安装
使用以下命令安装此库。或者,也可以手动编辑composer.json
文件,并添加ayesh/geo-ip
包。
composer require ayesh/geo-ip
使用
此库提供了一个\Ayesh\GeoIP\GeoIPLookup
类。使用Composer自动加载器(强烈推荐),或手动require
src/GeoIPLookup.php
文件。
自动数据库发现
use Ayesh\GeoIP\GeoIPLookup; $geoip = GeoIPLookup::createFromDefaultDatabase(); $geoip->lookup('8.8.8.8'); // "US" $geoip->lookup('123.19.12.50'); // "VN"
createFromDefaultDatabase
静态方法通过将JSON数据目录设置为标准Composer安装中默认的ayesh/geo-ip-database
位置(vendor/ayesh/geo-ip-database/data
)来创建一个GeoIPLookup
。
手动数据库路径
use Ayesh\GeoIP\GeoIPLookup; $geoip = new GeoIPLookup('path/to/json/directory'); $geoip->lookup('8.8.8.8'); // "US" $geoip->lookup('123.19.12.50'); // "VN"
贡献和问题
请随时为任何贡献或支持问题提交PR或问题。
数据库来源
此库使用ayesh/geo-ip-database
,该库反过来使用由MaxMind创建的GeoLite2数据,MaxMind的数据可以从https://www.maxmind.com获取。
此库本身是MIT许可。但是,请注意,MaxMind数据库是在CC-BY-NC-SA-4.0下分发的。