PHP获取MySQL执行sql语句的查询时间方法
2018-08-21 10:05
1046 查看
如下所示:
//计时开始 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获取MySQL执行sql语句的查询时间
- PHP获取MySQL执行sql语句的查询时间
- (转载)PHP怎么获取MySQL执行sql语句的查询时间
- 查询mysql中执行效率低的sql语句的方法
- 你用什么方法检查 PHP 脚本的执行效率(通常是脚本执行时间)和数据库 SQL 的效率(通常是数据库 Query 时间), 并定位和分析脚本执行和数据库查询的瓶颈所在?
- mysql的sql语句中直接计算时间 查询昨天 一周前 一月前 一年前的数据的方法
- mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .
- MySQL循环遍历执行查询SQL语句结果的方法
- 查看mysql sql 语句执行时间的两种方法
- sqlserver中获取执行sql语句时间的方法
- mysql5.7 慢查询配置 查看sql语句执行时间
- mysql的sql语句中直接计算时间 查询昨天 一周前 一月前 一年前的数据的方法
- MySQL循环遍历执行查询SQL语句结果的方法
- 查询mysql中执行效率低的sql语句的方法
- mysql sql语句执行时间查询
- mysql sql语句执行时间查询
- PHP MYSQL精确测试SQL语句执行时间
- mysql SQL语句执行时间
- php与mysql建立连接并执行SQL语句的代码
- mysql 的优化(如何查询mysql中执行效率低的sql语句)