婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP獲取MySQL執行sql語句的查詢時間方法

PHP獲取MySQL執行sql語句的查詢時間方法

熱門標簽:合肥企業外呼系統線路 代理打電話機器人 桂陽公司如何做地圖標注 電信外呼系統多少錢一個月 神龍斗士電話機器人 萍鄉商鋪地圖標注 企業400電話辦理多少費用 太原400電話申請流程 宿州正規外呼系統軟件

如下所示:

//計時開始
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=detailaid=571934group_id=23067atid=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語句的查詢時間方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL執行update語句和原數據相同會再次執行嗎
  • 一條SQL語句在MySQL中是如何執行的

標簽:鄂州 綏化 崇左 太原 白銀 衡陽 辛集 廊坊

巨人網絡通訊聲明:本文標題《PHP獲取MySQL執行sql語句的查詢時間方法》,本文關鍵詞  PHP,獲取,MySQL,執行,sql,語句,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP獲取MySQL執行sql語句的查詢時間方法》相關的同類信息!
  • 本頁收集關于PHP獲取MySQL執行sql語句的查詢時間方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 郎溪县| 铁岭市| 邹平县| 麦盖提县| 香河县| 宁陵县| 略阳县| 蒙阴县| 自治县| 封开县| 孟连| 乌海市| 静乐县| 金门县| 铁力市| 顺昌县| 逊克县| 兰西县| 乌拉特前旗| 通州区| 当阳市| 乡宁县| 竹山县| 东兰县| 迁安市| 濮阳县| 南木林县| 湘阴县| 榕江县| 葵青区| 怀来县| 临泽县| 察隅县| 海南省| 兴安盟| 宜君县| 贵德县| 大丰市| 桃源县| 鹰潭市| 称多县|