加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读