PHP获取MySQL执行sql语句的查询时间方法


Posted in PHP onAugust 21, 2018

如下所示:

//计时开始
runtime();
 
//执行查询
mysql_query($sql);
 
//计时结束.
echo runtime(1);
 
//计时函数 
function runtime($mode=0) {
 static $t; 
 if(!$mode) { 
  $t = microtime();
  return;
 } 
 $t1 = microtime(); 
 list($m0,$s0) = explode(" ",$t); 
 list($m1,$s1) = explode(" ",$t1); 
 return sprintf("%.3f ms",($s1+$m1-$s0-$m0)*1000);
}

对sql的执行时间进行分析可以:

1,确定sql的书写是否合理,高效

2,检查字段、表的设计是否合理

方法1:在系统底层对sql操作类进行改写,通常类的结构是

业务model ---》 db类 ---》 执行sql

可以根据情况在某阶段进行改写,比如db类;通常会修改

public function execute($sql) {
//code...

/*检测sql执行时间,超过执行时间记录到日志中*/
$start_time = array_sum(explode(' ', microtime()));

$this->lastresult = mysql_query($sql,$this->link) or $this->displayerror($sql);

$end_time = array_sum(explode(' ', microtime()));
$differ = $end_time - $start_time;
if($differ >0.001){    //修改时间范围,单位:秒
 putContent('sqlLOG', date('Y-m-d H:i:s', $start_time)." "
  . date('Y-m-d H:i:s', $end_time)." "
  .$differ. " ".$sql."\r\n");
}


//code...
}

引用:

phpmyadmin中的代码,获得query执行时间如下:

// garvin: Measure query time.
// TODO-Item http://sourceforge.net/tracker/index.php?func=detail&aid=571934&group_id=23067&atid=377411

$querytime_before = array_sum(explode(' ', microtime()));
$result = @PMA_DBI_try_query($full_sql_query, null, PMA_DBI_QUERY_STORE);
$querytime_after = array_sum(explode(' ', microtime()));
$GLOBALS['querytime'] = $querytime_after - $querytime_before;

除了这种方式还可以使用mysql的profile。

这个更适合统计多条sql的执行情况。

我见过好像是一个博客,访问页面之后会有一个提示大概说共查询了几次数据库,用了多长时间查询数据,那么开启mysql的profile就可以轻松实现了。

批注1:micortime函数

计算微秒的函数micortime(),可以返回当前UNIX时间戳和微秒数。返回浮点数单位为秒。不过函数仅在支持gettimeofday()系统调用的操作系统下可用。可以查下手册详细了解下。可能引发有些不明的错误,注意。

批注2:profile最多保存100条记录,这个要怎么解决呢?

profiling_history_size
The number of statements for which to maintain profiling information if profiling is enabled. The default value is 15. The maximum value is 100. Setting the value to 0 effectively disables profiling.

这个最大就100条了,改不了。

引用2:PHP获取毫秒级时间戳的方法

java里面可以通过gettime();获取。如果是要与java写的某些程序进行高精度的毫秒级的对接通信,则需要使用PHP输出毫秒级的时间。为获取更为精准的毫秒级时间戳可以使用下面的代码:

<?php
function getMillisecond() {
list($t1, $t2) = explode(' ', microtime());
return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
}
echo getMillisecond();

运行结果:1.46647658229E+12

以上这篇PHP获取MySQL执行sql语句的查询时间方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP和.net中des加解密的实现方法
Feb 27 PHP
浅析SVN常见问题及解决方法
Jun 21 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
php提交表单发送邮件的方法
Mar 20 PHP
PHP加密解密字符串汇总
Apr 26 PHP
php简单判断文本编码的方法
Jul 30 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 PHP
php ajax数据传输和响应方法
Aug 21 #PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 #PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 #PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 #PHP
PHP常见数组排序方法小结
Aug 20 #PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 #PHP
PHP数组常用函数实例小结
Aug 20 #PHP
You might like
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python简单定义与使用二叉树示例
2018/05/11 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
Python如何输出百分比
2020/07/31 Python
Python 如何查找特定类型文件
2020/08/17 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
shell程序中如何注释
2012/01/28 面试题
教师实习自我鉴定
2013/12/11 职场文书
合作意向协议书范本
2014/03/31 职场文书
项目投资建议书
2014/05/16 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
先进班集体事迹材料
2014/12/25 职场文书
2015入党自荐书范文
2015/03/05 职场文书
新郎结婚感言
2015/07/31 职场文书
同学聚会祝酒词
2015/08/10 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript