5

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

?>
4

2 に答える 2

2

パフォーマンスが気になる場合は、PHP Extension API を使用することをお勧めします。純粋な PHP API では 9,000 qps であるのに対し、PHP (C API) 拡張では 1 秒あたり 700 万以上のクエリを取得できます。

ここでは、拡張機能をコンパイルする方法と、PHP で mmdb データベースを使用する方法について説明します。

Kohana PHP を使用した Maxmind GeoLite2 の紹介

IP アドレスの地理位置情報

于 2014-03-10T21:42:07.777 に答える