我下载并解压缩了GeoLite2-City.mmdb,GeoLite2-Country.mmdb。两者都在htdocs\geoip\
然后,我运行了这个脚本。麻烦的是,这件事有什么作用?什么是require_once 'vendor/autoload.php';
应该包含什么?我在这里遗漏了什么。我过去常常使用以.dat文件形式出现的旧版本,并且没有问题。这些.mmdb对我来说有点难以破解。我想要做的就是当用户在页面上使用搜索工具时,将国家代码,国家/地区名称和其他数据存储在数据库中。我怎么做到这一点?
我的测试页面取自网站
<?php
require_once 'vendor/autoload.php'; //What is this supposed to contain?
use GeoIp2\Database\Reader; // What is this too?
// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader($_SERVER['DOCUMENT_ROOT'].'\geoip\GeoIP2-City.mmdb'); // Where my DB resides
// Replace "city" with the appropriate method for your database, e.g.,
// "country".
$record = $reader->city('128.101.101.101');
print($record->country->isoCode . "\n"); // 'US'
print($record->country->name . "\n"); // 'United States'
print($record->country->names['zh-CN'] . "\n"); // '??'
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
print($record->city->name . "\n"); // 'Minneapolis'
print($record->postal->code . "\n"); // '55455'
print($record->location->latitude . "\n"); // 44.9733
print($record->location->longitude . "\n"); // -93.2323
?>
答案 0 :(得分:2)
如果您对performance感到担忧,我建议您使用PHP Extension API。使用PHP(C API)扩展,每秒可以获得超过700万次查询,使用纯PHP API可以获得9,000 qps的查询。
我将介绍如何编译扩展,以及如何在PHP中使用mmdb数据库:
Intro to Maxmind GeoLite2 with Kohana PHP
答案 1 :(得分:1)
该软件包应该通过Composer安装。当你安装了作曲家并且你的作品在你的composer.json中准备就绪时应该出现一个新的记录:
{
"require": {
"geoip2/geoip2": "0.5.*"
}
您可以在此网址中找到有关如何安装该软件包的更多信息:https://github.com/maxmind/GeoIP2-php
按照每个步骤安装Composer并正确获取所有依赖项。