diff --git a/libraries/dbi/mysql.dbi.lib.php b/libraries/dbi/mysql.dbi.lib.php index 1e1e66e53..818930b73 100644 --- a/libraries/dbi/mysql.dbi.lib.php +++ b/libraries/dbi/mysql.dbi.lib.php @@ -126,13 +126,33 @@ function PMA_DBI_try_query($query, $link = null, $options = 0) } } - if ($options == ($options | PMA_DBI_QUERY_STORE)) { - return @mysql_query($query, $link); - } elseif ($options == ($options | PMA_DBI_QUERY_UNBUFFERED)) { - return @mysql_unbuffered_query($query, $link); - } else { - return @mysql_query($query, $link); + if ($GLOBALS['cfg']['DBG']['enable']) { + $time = microtime(true); } + if ($options == ($options | PMA_DBI_QUERY_STORE)) { + $r = mysql_query($query, $link); + } elseif ($options == ($options | PMA_DBI_QUERY_UNBUFFERED)) { + $r = mysql_unbuffered_query($query, $link); + } else { + $r = mysql_query($query, $link); + } + + if ($GLOBALS['cfg']['DBG']['enable']) { + $time = microtime(true) - $time; + + $hash = md5($query); + + if (isset($_SESSION['debug']['queries'][$hash])) { + $_SESSION['debug']['queries'][$hash]['count']++; + } else { + $_SESSION['debug']['queries'][$hash] = array(); + $_SESSION['debug']['queries'][$hash]['count'] = 1; + $_SESSION['debug']['queries'][$hash]['query'] = $query; + $_SESSION['debug']['queries'][$hash]['time'] = $time; + } + } + + return $r; } /** diff --git a/libraries/dbi/mysqli.dbi.lib.php b/libraries/dbi/mysqli.dbi.lib.php index 826858437..99b111e0d 100644 --- a/libraries/dbi/mysqli.dbi.lib.php +++ b/libraries/dbi/mysqli.dbi.lib.php @@ -174,7 +174,27 @@ function PMA_DBI_try_query($query, $link = null, $options = 0) return false; } } - return mysqli_query($link, $query, $method); + + if ($GLOBALS['cfg']['DBG']['enable']) { + $time = microtime(true); + } + $r = mysqli_query($link, $query, $method); + if ($GLOBALS['cfg']['DBG']['enable']) { + $time = microtime(true) - $time; + + $hash = md5($query); + + if (isset($_SESSION['debug']['queries'][$hash])) { + $_SESSION['debug']['queries'][$hash]['count']++; + } else { + $_SESSION['debug']['queries'][$hash] = array(); + $_SESSION['debug']['queries'][$hash]['count'] = 1; + $_SESSION['debug']['queries'][$hash]['query'] = $query; + $_SESSION['debug']['queries'][$hash]['time'] = $time; + } + } + + return $r; // From the PHP manual: // "note: returns true on success or false on failure. For SELECT, diff --git a/libraries/footer.inc.php b/libraries/footer.inc.php index e0ff3e7a8..09d6b958f 100644 --- a/libraries/footer.inc.php +++ b/libraries/footer.inc.php @@ -72,6 +72,13 @@ if (count($GLOBALS['footnotes'])) { echo ''; } +if (! empty($_SESSION['debug'])) { + echo '
'; + print_r($_SESSION['debug']); + echo ''; + $_SESSION['debug'] = array(); +} + ?>