php loc函数,GitHub - shankka/ip2loc: 根据ip查询所属地php扩展 php c

ip2loc是一个根据ip查询归属地的php扩展,包含两个部分:loader工具以及用于php的查询扩展。loader工具将ip归属地数据加载入共享内存;php扩展提供两组函数从共享内存中查询ip:

/**

* array ip2loc(string $ip);

* 一次ip2loc会有一次完整的共享内存的attach和detach

*/

$ip = '202.108.37.12';

var_dump(ip2loc($ip));

/**

* attach共享内存

* shm resource ip2loc_connect();

* 查询ip

* array ip2loc_get(string $ip, shm resource $shm);

* detach共享内存

* boolean ip2loc_close(shm resource $shm);

* 适用于脚本中查询多个ip的情况

*/

$shm = ip2loc_connect();

ip2loc_get($ip, $shm);

ip2loc_close($shm);

?>

安装

#loader部分

touch /dev/shm/ip2loc

cd loader

make

#测试

./ip2loc_loader region_only_human.txt

./ip2loc 202.108.37.12

#php扩展部分

phpize

./configure

make

性能

在一台双核1.86GHz的测试机上跑150w左右数据,耗时30s,即每秒5w左右处理能力,我未进行详尽测试,处理能力应该与机器性能有直接关系。该扩展工作原理为在共享内存中使用二分查找定位记录,未使用缓存,所以可以使用重复的数据进行测试。

数据源为一份网上公开的国内ip归属地文本文件,ip2loc依赖于该文件的格式工作。

这份代码无任何copyright要求,如果有需要,任何人可以以任何形式修改、分发,无需任何声明。希望能对大家有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值