【问题标题】:How to use MaxMind GeoIP in PHP?如何在 PHP 中使用 MaxMind GeoIP?
【发布时间】:2012-01-09 21:00:28
【问题描述】:

我正在使用 MaxMind 的 GEOIPCITY 数据库的二进制版本。以下代码为我提供了我需要的有关访问者的所有信息:

include("geoipcity.inc");
include("geoipregionvars.php");

$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);
print_r( geoip_db_get_all_info() );
$record = geoip_record_by_addr($gi, $user_ip);
print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "<br /><br />";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "<br /><br />";
print $record->city . "<br /><br />";
print $record->postal_code . "<br /><br />";
print $record->latitude . "<br /><br />";
print $record->longitude . "<br /><br />";
print $record->metro_code . "<br /><br />";
print $record->area_code . "<br /><br />";
print $record->continent_code . "<br /><br />";
geoip_close($gi);

除了网速、ISP 等之外,我真的不需要任何东西。

我的问题是,我的网站的某些部分需要显示特定州下的所有城市,或特定国家/地区的所有州/地区。例如,我需要在注册表中执行此操作。

有没有办法通过查询二进制文件来获取这些列表?还是我必须从 mysql 版本中处理所有这些?

我宁愿只使用二进制版本,因为它更快,但现在我不确定是否可以在不使用 mysql 版本的情况下显示某个城市下的所有 zip 或某个国家下的所有州等。需要两者都用吗?

http://www.maxmind.com/app/php
http://geolite.maxmind.com/download/geoip/api/php/

【问题讨论】:

    标签: php mysql geolocation


    【解决方案1】:

    GeoIP 数据库仅用于一个目的,并且仅用于一个目的:返回输入 IP 的位置信息。它不是一个通用的 GIS 数据库,并且不能用于此目的,因为有些位置不会为任何 IP 返回。 (例如,一个没有本地 Internet 服务的小镇可能根本不会出现在他们的数据库中,因为该镇中的任何 IP 都可能被归类为附近的另一个城市。)

    Maxmind 有一个单独的“世界人口城市”数据库,更可能适合此目的:http://www.maxmind.com/app/worldcities

    【讨论】:

    • +1 以获得很好的建议。此外,我已经多次编写 MaxMind 支持,每次他们都很活泼并且知道他们在说什么。他们可能有其他建议,但我猜他们的建议会和黄昏的一样。
    【解决方案2】:

    我刚刚编写了一个 linux 守护程序来服务 MaxMind 城市级 geoip 查询。每个查询大约需要 3 微秒,在运行时,服务器在 64 位机器上占用大约 550MB 的内存(在 32 位机器上占用 300MB)。

    https://github.com/homer6/geoipd

    我相信您也可以将其修改为索引状态。如果您需要帮助,请告诉我,我很乐意帮助您修改它。

    希望对您有所帮助...

    【讨论】:

      【解决方案3】:

      Maxmind 的二进制数据库可能不是为此目的而设计的。尝试下载他们的 .csv 文件,将其导出到数据库中,然后您可以在“状态”字段中索引位置表。然后可以轻松选择一个州的所有城市。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 2014-11-15
        相关资源
        最近更新 更多