php和mysql关于ip段查询
背景:项目中有个小需求需要统计某个地区在某个时间段的注册用户数,已经提供该地区对应的ip段,注册数据表中存有注册用户ip。
初期的想法是:完善ip段内的所有ip数,形成一个列表,然后用注册用户ip字段进行in查询。
实施的时候出了以下问题:
1.读取ip段文件,完善150多个ip段时出现了1000多W的ip信息。完善ip段信息,主要是通过 ip2long() 函数和 long2ip() 函数(先将ip段的起始ip和结束ip均转为长整形,然后完善长整形之间的值,并每个都转回ip信息)。
2.注册表的数据量在5000W左右,in 查询ip列表,测试1000个ip查时耗时到60s
改善后的想法:考虑到php有转换ip和long类型的参数,果断百度了下mysql是否有。幸运的是,mysql足够强大也有对应的 inet_aton() 和 inet_ntoa() 函数
改善后的做法是直接在mysql端进行转换比较,如下:
select count(userId) as user_num,date_format(FROM_UNIXTIME(`addtime`),'%y%m') sdate
from t_user_attr
where addtime >= unix_timestamp("2014-09-01 00:00:00")
AND addtime < unix_timestamp("2014-10-31 23:59:59")
AND inet_aton(regIp) >= inet_aton("1.34.0.0") AND inet_aton(regIp)<=inet_aton("1.35.255.255")
运行的效果是:
测试ip段包含ip数达近20W个时,查询用户id用了23 s左右 (测试ip段为 60.248.0.0|60.251.255.255)
总结:当数据量级大了起来后,以前体现不出的性能就会很明显。
上面的sql还可以优化下,将条件里时间的比较在php端完成(时间字符串转时间戳),不在mysql端转换。
php和mysql关于ip段查询相关推荐
- mysql 指定ip段 掩码_网络ip段划分子网掩码
局域网子网知识 子网掩码的计算 一.子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保 ...
- 获得国内中国电信,网通,铁通的最新ip段的方法
APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况: wget http:/ ...
- sql 从ip列表中查询ip段_IP地址段查询深度优化案例
作者介绍 陈华军,苏宁IT总部架构专家,PostgreSQL及MySQL产品技术负责人,PostgreSQL中文社区核心成员. 问题 某日,研发的小伙伴扔过来一个SQL希望帮忙优化. select n ...
- php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码
* 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...
- 基于Python查询某个ip是否属于某个或多个ip段
1.查询某个ip段包含的ip和ip个数 import IPyips = IPy.IP('192.168.1.0/24') #打印IP段内ip数量 print(len(ips)) #打印ip段内所以ip ...
- 3.网络安全渗透测试—[信息收集篇3]—[whois查询和反查/IP查询和反查/C段查询/资产相关]
一.whois查询和反查 1.whois信息查询:域名->注册人和注册邮箱 (1)概念: whois反查要先涉及到一个概念就是whois,whois简单来说,就是一个用来查询域名是否已经被注册, ...
- mysql设置hostname多个ip段_PHPMyadmin 配置多个网段
PHPMyadmin配置文件config.inc.php内容如下,在需要设置的地方增加了相关注释. 非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具: 1.先到网上下载phpm ...
- 子域名爆破C段查询调用Bing查询同IP网站
在线子域名爆破 1 <?php 2 3 function domainfuzz($domain) { 4 $ip = gethostbyname($domain); 5 preg_match(& ...
- 配置MySQL单个用户多个IP段白名单
配置多个IP段白名单 用户为testuser,配置100.%.%.%,192.%.%.%,127.%.%.%三个ip段可访问. 因为数据库通过了本地nginx使用127.0.0.1:3306做过反向代 ...
- mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...
当前位置:我的异常网» MySQL » MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本 MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本空闲状态 www.myexceptions.n ...
最新文章
- MAC: Homebrew(代替yum)安装
- python界面颜色-给Python点颜色——青少年学编程
- 【OpenCV入门指南】第五篇 轮廓检测 上
- 游戏行业全场景数字化解决方案全面上线,速来围观
- 阿里大数据分析与应用(part3)--常用的大数据分析平台
- 不要被约束的意思_俗话说:“娶妻不娶颧骨高,嫁汉不嫁连眉梢”,到底什么意思?...
- 添加图标_win10系统轻松添加显示桌面图标的操作方法
- Pydiction : VIM上的PYTHON代码自动补全插件
- 【java线程系列】java线程系列之java线程池详解
- 获取某一天的开始时间
- 2018厦门大学计算机技术分数线,2018厦门大学专业排名及分数线 王牌专业有哪些...
- 2014大众点评Hackathon参赛感想
- 调侃python的段子_杠精的段子 讽刺调侃杠精的说说句子
- jquery input标签中 中checkbox全部选中与全部取消
- BM33-二叉树的镜像
- PCB布局和绘制的关键操作
- python自学笔记+一个汇率计算PyQt实例
- linux程序间管道通信,linux进程间通信——管道 详解
- SpringbootHealth访问健康监测时报404问题
- 让我差点中计的电话诈骗套路!|凹凸日常