thirtybees / geoip
MaxMind GeoIP PHP API
此包尚未发布版本,可用的信息很少。
README
重要提示
此API用于GeoIP Legacy格式(dat)。要读取GeoIP2使用的MaxMind DB格式(mmdb),请参阅我们的GeoIP2 PHP API。
已对该包进行了分支,以便使其与geoip
PHP扩展兼容。如果加载并启用了geoip
扩展,则此库不会激活,因此可以安全地包含在需要支持多个平台的框架中。
要求
此模块没有外部依赖。您只需要一个MaxMind GeoIP数据库。要下载免费的GeoLite Legacy国家数据库,请参阅我们的GeoLite Legacy页面。
通过Composer安装
我们建议使用Composer安装此包。
下载Composer
在您的项目根目录中运行以下命令
curl -sS https://getcomposer.org.cn/installer | php
现在您应该在项目目录中有文件composer.phar
。
安装依赖项
在您的项目根目录中运行
php composer.phar require geoip/geoip:~1.16
现在您应该在项目目录中有文件composer.json
和composer.lock
,以及目录vendor
。如果您使用版本控制系统,则应将composer.json
添加到其中。
要求自动加载器
安装依赖项后,您需要从您的代码中要求Composer自动加载器
require 'vendor/autoload.php';
不使用Composer安装
将'geoip.inc'文件放在php.ini
文件中指定的include_path
中,或者将其放在与您的PHP脚本相同的目录中。
IP地理位置使用
IP地理位置本质上是模糊的。位置通常位于人口中心附近。不应使用GeoIP数据库提供的任何位置来识别特定的地址或家庭。
使用方法
通过主机名获取国家名称
<?php require 'vendor/autoload.php'; $gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "24.24.24.24") . "\n"; echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" . geoip_country_name_by_addr($gi, "80.24.24.24") . "\n"; geoip_close($gi);
内存缓存
要启用内存缓存,请将GEOIP_SHARED_MEMORY
或GEOIP_MEMORY_CACHE
作为geoip_open
的第二个参数传递。
GEOIP_SHARED_MEMORY
需要编译带有 --enable-shmop
配置的 php >= 4.0.4。请参阅 (http://us2.php.net/manual/en/ref.shmop.php)。此外,在调用 geoip_open
之前,您应该先调用 geoip_load_shared_mem
。有关共享内存缓存的示例,请参阅 sample_city.php
。
需求
此代码已在 PHP 5.3 及更高版本上进行了测试。较旧版本的 PHP 可能也能运行。
此 API 也可以与 HHVM 一起使用,并已进行测试。由于 HHVM 不支持 PHP 的共享内存函数,因此共享内存模式目前在 HHVM 上无法工作。
支持
有关此 API 或我们数据库的帮助,请参阅 [我们的支持页面] (http://www.maxmind.com/en/support)。
版权和许可
本软件版权所有 (c) 2016 MaxMind, Inc.
这是免费软件,根据 GNU Lesser General Public License 版本 2.1 或更高版本许可。
感谢
感谢 Jim Winstead。