每次请求都需要加载10m的纯真IP qqwry.dat 文件,自己测试不会发现问题,但如果访问量上去了,会影响每次请求的相应效率,并且会消耗一定的io读写,故打算优化
优化方案
每个IP区间之间不存在交集,每个查找只要按score查找区间[ip2long(ip), ip2long(ip) + N],N的值必需足够大,确保结束IP的值大于当前区间的结束IP。这个有点难理解,举个栗子:
有3个区间
Value Score
36 60
61 67
68 68查找IP=50时,查找的score为[50, 50 + N],且要满足50 + N >= 60,否则就无法找到[36, 60]这个区间。
qqwry.dat 转为txt文件
首先下载IPLook软件,操作如下
写入redis
<?php
if (ini_set('memory_limit', '256M')) {
echo 'Memory limit set to 256M successfully' . "\n";
} else {
echo 'Failed to set memory limit to 256M' . "\n