以下是不使用 Composer 的方法。
变化:
require_once '../vendor/autoload.php';
use MaxMind\Db\Reader;
$reader = new Reader('GeoIP2-City.mmdb');
收件人:
require_once __DIR__ . '/' . 'Db/Reader.php';
require_once __DIR__ . '/' . 'Db/Reader/Decoder.php';
require_once __DIR__ . '/' . 'Db/Reader/InvalidDatabaseException.php';
require_once __DIR__ . '/' . 'Db/Reader/Metadata.php';
require_once __DIR__ . '/' . 'Db/Reader/Util.php'; // new 2014/09
use MaxMind\Db\Reader;
$mmdb= true ? 'GeoLite2-City.mmdb' : 'GeoLite2-Country.mmdb';
$reader = new Reader( __DIR__ . '/' . $mmdb );
您需要 PHP 5.3+。与使用 Composer 相比,您甚至可以节省一些代码和文件数量。 (删除了一些测试代码,以及整个 Guzzle 结构。)此外,它更清楚地说明了命名空间在 PHP 中如何作为类的良好替代品(当类仅用于命名空间时)。
您可以丢弃benchmark.php 的其余部分并开始使用$reader->get()。
如果您确实想要进行基准测试,在大多数平台上,您需要修改 rand() 调用。试试这个:
变化:
$ip = long2ip(rand(0, pow(2, 32) -1));
收件人:
$n= (float)mt_rand(0, pow(2, 31) - 1);
if (mt_rand(0,1)) $n+= pow(2, 31);
$ip = long2ip($n);
或者只是用'.'连接四个mt_rand(0,255),这可能更容易!
.......................
编辑 2014/09
......................
在上面添加了“Db/Reader/Util.php”。
MaxMind-DB-Reader-php 版本:1.0.0 (2014-09-22)
您的文件结构应如下所示:
./benchmark.php
./GeoLite2-City.mmdb
./GeoLite2-Country.mmdb
./Db/Reader.php
./Db/Reader/Decoder.php
./Db/Reader/InvalidDatabaseException.php
./Db/Reader/Metadata.php
./Db/Reader/Util.php