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访问查询mysql数据的三种方法
Oct 09 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php防止用户重复提交表单
Nov 02 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
php array_keys 返回数组的键名
Oct 25 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 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
晶体管来复再生式二管收音机
2021/03/02 无线电
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
smarty中js的调用方法示例
2014/10/27 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python实现126邮箱发送邮件
2020/05/20 Python
Python 日期与时间转换的方法
2020/08/01 Python
留学推荐信中文范文三篇
2014/01/25 职场文书
安全生产大检查方案
2014/05/07 职场文书
社区维稳工作方案
2014/06/06 职场文书
影视广告专业求职信
2014/09/02 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Win11查看设备管理器
2022/04/19 数码科技
Mysql 文件配置解析介绍
2022/05/06 MySQL