PHP获取MySQL执行sql语句的查询时间技巧
发布时间:2022-06-30 15:28:55 所属栏目:PHP教程 来源:互联网
导读:今天小编就为大家分享一篇PHP获取MySQL执行sql语句的查询时间方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。 如下所示: //计时开始 runtime(); $t1 = microtime(); list($m0,$s0) = explode( ,$t); list($m1,$s1) = explode( ,$t
今天小编就为大家分享一篇PHP获取MySQL执行sql语句的查询时间方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。 如下所示: //计时开始 runtime(); $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."rn"); } //code... } 引用: phpmyadmin中的代码,获得query执行时间如下: // garvin: Measure query time. // TODO-Item http://sourceforge.net/tracker/index.php?func=detail&aid=571934&group_id=23067&atid=377411 批注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 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |