【问题标题】:How do I use MaxMind's Databases in php如何在 php 中使用 MaxMind 的数据库
【发布时间】:2014-01-06 07:30:07
【问题描述】:

我下载并提取了 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

?>

【问题讨论】:

  • 好吧,既然 MaxMind 是一个商业产品,我希望有可用的文档和支持。
  • 我正在使用免费数据库。
  • 文档不适用于那个?

标签: php geoip maxmind


【解决方案1】:

这个包应该是通过 Composer 安装的。当您安装了 composer 并且您的项目准备就绪时,您的 composer.json 应该会出现一条新记录:

    {
    "require": {
        "geoip2/geoip2": "0.5.*"
    }

您可以在以下网址找到有关如何安装该软件包的更多信息:https://github.com/maxmind/GeoIP2-php

按照每个步骤安装 Composer 并正确获取所有依赖项。

【讨论】:

  • 好的,但是如果我使用共享主机计划,我可以安装/执行所有这些吗?现在我只是在演示东西并在 GoDaddy 上购买了共享主机。我可以在那里这样做还是只能这样做
  • 是的,您可以在本地机器上使用 composer 并将所有内容上传到您的 FTP。所以,没有必要直接在服务器中使用 Composer。
  • 实际上,我想问的是,当我使用像 GoDaddy 这样的共享托管计划时,是否可以使用它。不是本地机器。
  • 是的,您可以使用它。但是你必须在你的本地机器上使用 Composer 来生成所有必要的文件,比如 autoload.php(这个是由 Composer 生成的)。当您拥有所有文件后,您可以使用您喜欢的 FTP 帐户传输它们。
  • 好的。谢谢。你解释得很好。
【解决方案2】:

如果您完全关心performance,我建议您使用 PHP 扩展 API。使用 PHP (C API) 扩展每秒可以获得超过 700 万次查询,而使用纯 PHP API 可以达到每秒 9,000 次。

我在这里描述如何编译扩展,以及如何在 PHP 中使用 mmdb 数据库:

Intro to Maxmind GeoLite2 with Kohana PHP

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多