位置: 编程技术 - 正文

php中strtotime函数性能分析(php的time函数)

编辑:rootadmin

推荐整理分享php中strtotime函数性能分析(php的time函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php stristr函数,php str函数,php的time函数,phpstrcmp函数,php timestamp,php strcmp函数用法,php的time函数,php的time函数,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在做一个游戏数据统计后台,最基础的功能是通过分析注册登录日志来展示用户数据。在公司内部测试,用户量很少,所以就没有发现什么性能问题。但是这两天一起放到真实的测试环境,用户量噌噌地就涌进来了,从下午开始,在线人数的统计开始卡,几秒钟才返回数据;注册人数的查询速度还行。到了晚上,在线人数的统计基本上就加载超时打不开了。虽然不知他们游戏端那边什么BUG,玩家那边登录经常出问题,导致在线人数和注册人数并不是很多。但是就这一点数据量我这边查询的速度也不行,这就很尴尬了。

现在他们那边在查游戏的BUG,我这边也在看统计后台的代码到底性能出在哪里。首先说明一下,我统计用的数据是从库,他们游戏用的是主库,再说我这边管理员人数就几个,不可能会影响到游戏服的性能问题。

今天项目组长把数据库都导过来到公司内的服务器。我拷了一份到本机,看看统计平台的性能问题出在哪里。然后却发现,居然连注册统计都非常卡,服务器上是两秒左右返回,本机要二十几秒,还经常超时(PHP的默认配置是秒超时);在线统计的就不用说了肯定打不开。看了一下数据库,当天的注册记录也就 条左右(有假数据),每五分钟统计一次,一天就是统计 次。当然这里肯定不是循环查询数据库次,那样会被骂死的吧。

统计时间段内的注册数,逻辑也非常简单,就是每个时间段遍历一次数据,比较时间大小,符合就+1。但是为什么这么简单的逻辑,也就一百万次循环,怎么会跑出了足足半分钟的时间那么久呢?

php中strtotime函数性能分析(php的time函数)

关键问题就出在于 时间比较这里了,我们都知道,时间戳是比较时间大小的一个比较科学的方法,而数据库里记录的时间一般都是以 YYYY-mm-dd HH:ii:ss 的形式,PHP里有strtotime的函数转换成时间戳。然而在个for * 个foreach 的加持之后,这里的执行时间长达半分钟。

那这样的话,基本上是没办法再用这个strtotime的函数的了,那还有什么办法比较时间大小呢?答案很简单粗暴,PHP里面可以直接比较两个日期时间字符串!所以改过后的代码如下。然后现在的运行时间大概是 0.3秒

遍历再优化

大家可能发现一个问题,for 里面嵌套一个 foreach,这性能有点担忧,其中里面的 foreach 有必要完全遍历吗?其实是不必的。只要查SQL数据的时候,按时间排序排出来。优化后的时间比较算法如下:

这里巧用了 continue 和 break 关键字,用于跳过一次循环和结束整个循环。这次的话,一天中刚开始的时间统计中,后面很大一部分数据的都可以直接跳过。最后总遍历时间缩短为约0.秒 。

总结,在大型的数据处理中,应该尽量避免在遍历中进行数据的转换,避免用一些原理复杂的函数。如strtotime

php运行报错Call to undefined function curl_init()的最新解决方法 之前网上的解决方法如下:1、在php.ini中开启curl扩展2、将php目录下的libeay.dll、ssleay.dll、php5ts.dll拷贝到c:windowssystem里面(还有一种方法是说在httpd

静态html文件执行php语句的方法(推荐) HTM文件中的PHP语句不会被执行,如何在HTML文件中运行php代码?html文件执行php语句的方法:1,修改httpd.conf,命令Apache把HTML当作PHP,需要修改服务器里的ht

php_pdo 预处理语句详解 这篇文章主要介绍的是关于php_pdo预处理语句,下面话不多说,我们来看看详细的内容。一、预处理语句可以带来两大好处:1、查询仅需解析(或预处理

标签: php的time函数

本文链接地址:https://www.jiuchutong.com/biancheng/301168.html 转载请保留说明!

上一篇:php的socket编程详解(php socket编程)

下一篇:php运行报错Call to undefined function curl_init()的最新解决方法(php call stack)

  • 怎么计提坏账准备到本年利润
  • 什么合同属于有效合同
  • 季度预交所得税多年末应交少怎么计提
  • 工会费缴纳基数
  • 无形资产净损失计入
  • 工资及工资性支出
  • 小规模纳税人标准2019
  • 出口关税如何做账
  • 所得税弥补以前的利润
  • 存货报废应如何记账
  • 经纪人佣金计入什么科目
  • 企业员工应付未付的工资该如何写其会计分录?
  • 地税退税政策
  • 国家税务局通用定额发票查询
  • 增值税减免税申报明细表怎么填写1%
  • 工程服务税收的分类
  • 15-算
  • 企业发放防暑降温物品依据
  • 企业支付宝税务局能查吗怎么查
  • 原材料销售出库会计分录
  • 股利分配是在当期损益吗
  • 进项税额转出再转入
  • 出售已使用五年的住房有税收优惠吗?
  • 现金折扣列题
  • 开发企业土地使用税计算方法
  • 人力成本费用率和人工成本利润率
  • 赠与合同任意撤销与法定撤销的区别
  • 网速变慢的原因有哪些
  • 委托代销商品的特点及种类
  • 会计分录的基本构成要素
  • 全资子公司取得注册证可以免临床
  • php文件合并
  • 小刺猬 (© lorenzo104/Getty Images)
  • Yii使用migrate命令执行sql语句的方法
  • 废旧物资回收企业所得税优惠政策
  • php文件包含的4种方式
  • 零售价是含税价还是不含税价
  • php处理xml数据
  • 一般纳税人企业所得税如何计算
  • php8.0 特性
  • 注意力机制有什么作用
  • iscsiadm命令详解
  • cp命令复制系统文件/etc/profile
  • 使用php免费发送短信
  • 增值税返还需要交增值税吗
  • 垃圾处理费计提吗
  • 房地产预缴增值税计税依据
  • 证券公司收益凭证管理办法
  • 增值税普票税额可以抵扣税吗
  • 吊车租赁有限公司
  • 长期股权投资评估增值调整
  • 广告收入计入哪个科目
  • 总公司与分公司账务处理
  • 房地产项目企业
  • redhat系统安装gvim
  • 如何彻底释放k50至尊版性能
  • freebsd常用命令
  • 中兴新支点操作系统安装教程
  • Windows 8.1 with Update MSDN简体/繁体中文原版下载地址与安装密匙
  • win10系统怎么设置不锁屏和休眠
  • win8恢复出厂设置找不到恢复环境
  • sbdrvdet.exe - sbdrvdet是什么进程 有什么用
  • css鼠标移入显示
  • python中matplotlib绘制曲线
  • document.all.value
  • shell中echo命令详解
  • linux shell 数组长度
  • python多线程爬虫代码
  • [置顶]游戏名:chivalry2
  • 谷歌chrome浏览器网页版网址
  • 每天一篇小练笔30字
  • javascript面向对象 第三方类库
  • 税务分局长级别
  • 税收缴款书税务收现专用的开票人是谁
  • 山东威海文登宋村镇有哪些村
  • 技术服务收入确认方法
  • 什么是征收率什么是税率
  • 2021年个税退税条件
  • 个体户刻公章需要备案吗
  • 汕头办理社保卡流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设