sudo apt-get install
geoip-bin // command line 指令
php5-geoip // 整合在 php5 functions 中
geoip-database // 免費版的 ip database
maxmind 有提供 geoip 的免費 library,當然也有付費版本。查看一下免費版的條款,一來要放上他們的連結,二來商業只能使用一年。 所以我不考慮就直接買了,50USD,更新一次要 24USD,那就一年更新一次吧!雖然我買了,但在買之前,只查得到付費版的準確率「只有」99.8%,跟 cloudfront 的準確率是一樣的。
免費版和付費版準確率的差異:
我從 access log 中挖了 90 萬個不重覆 IPV4,使用 geoip2 (v2) 來測試,結果如下:測試 IP 數:907818
免費版 查不到:3240
付費版 查不到:3228
免費版和新版不一致:1682
以官方的說法付費版的準確度到 99.8% ,由上面的測試結果來計算,免費版的準確度則到 99.6%。
另外有 2.5% 的使用者是 IPV6 ,我也測一下
測試 IP 數:23548
免費版 查不到:5
付費版 查不到:5
免費版和新版不一致:0
看來 ipv6 的免費和付費版本是一模一樣的。
速度效能:
它分為 v1 和 v2 ,v1 的資料庫是 .dat , v2 的資料庫是 .mmdb。php 的 v1 直接裝 php5-geoip 即可,v2 需使用 php composer 來載入,但速度慢到很誇張,要手動裝 php extension ,速度就會變很快了。前幾天簡單用 ab 測一下速度,那時沒有記,這是大概的數字,越高效能越好:
php5 v1:300
php5 v2 (沒 extension):30
php5 v2 (有 extension):300
php5 v2 (透過 shell_exec):105
因為 v2 還有分,command line 和 php extension,command line 比較好裝,php extension ,還要安裝 php5-dev (要多 19 個套件),然後產生 maxmind.so 再去改 php.ini。怕之後重裝機器會有困難,所以遲疑了很久才決定使用 php5 extension
結論:
- 付費版的 v2 的 DB (*.mmdb) 有 2.3MB;免費版的 2.0MB,但測出來的結果免費版本的準確度其實蠻高的。不過使用者最好付費。
- v1 比較好安裝;v2 要用 composer ,加裝 extension 很麻煩。
- v1 的 php function 只能用 ipv4 ,ipv6 要透過 command line: geoiplookup6()
- ipv6 目前台灣很少人用,但國外應該是越來越多,因為 v4 都被用完了。猜測之後 v6 應該也會有比較明顯的付費差異,因為 IPV6 會有很多稀有地區的 IP
- v2 使用時記得要 try catch,不然連 127.0.0.1 都會發生 Error