From de86f2f4c4fbc6358f4905904dca13e79f4fb89a Mon Sep 17 00:00:00 2001 From: Steve Alberty Date: Thu, 14 Jun 2001 16:10:09 +0000 Subject: [PATCH] add summary view and locked tables support --- db_details.php3 | 87 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 16 deletions(-) diff --git a/db_details.php3 b/db_details.php3 index fd1329dca..f845bcfa2 100755 --- a/db_details.php3 +++ b/db_details.php3 @@ -15,18 +15,60 @@ else $tables = mysql_list_tables($db); $num_tables = @mysql_numrows($tables); -if (MYSQL_MAJOR_VERSION>=3.23){ - $query="show table status from $db"; - $result=mysql_query($query); +// speedup view on locked tables - staybyte - 11 June 2001 +if ($num_tables>0 && MYSQL_MAJOR_VERSION>=3.23 && intval(MYSQL_MINOR_VERSION)>=3){ + // Special speedup for newer MySQL Versions + if ($cfgSkipLockedTables==true && MYSQL_MAJOR_VERSION==3.23 && intval(MYSQL_MINOR_VERSION)>=30){ // in 4.0 format changed + $query="SHOW OPEN TABLES from $db"; + $result=mysql_query($query); + // Blending out tables in use + if ($result!=false && mysql_num_rows($result)>0){ + while ($tmp=mysql_fetch_array($result)){ + if (preg_match("/in_use=[1-9]+/",$tmp["Comment"])){ // in use? + // memorize tablename + $sot_cache[$tmp[0]]=true; + } + } + mysql_free_result($result); + + if (isset($sot_cache)){ + $query="show tables from $db"; + $result=mysql_query($query); + if ($result!=false && mysql_num_rows($result)>0){ + while ($tmp=mysql_fetch_array($result)){ + if (!isset($sot_cache[$tmp[0]])){ + $sts_result=mysql_query("show table status from $db like '".AddSlashes($tmp[0])."'"); + $sts_tmp=mysql_fetch_array($sts_result); + $tbl_cache[]=$sts_tmp; + } + else{ // table in use + + $tbl_cache[]=array("Name"=>$tmp[0]); + } + } + mysql_free_result($result); + $sot_ready=true; + } + } + } + } + if (!isset($sot_ready)){ + $result=mysql_query("show table status from $db"); + if ($result!=false && mysql_num_rows($result)>0){ + while ($sts_tmp=mysql_fetch_array($result)){ + $tbl_cache[]=$sts_tmp; + } + mysql_free_result($result); + } + } } if($num_tables == 0) { echo $strNoTablesFound; } -// shows all tables faster on high traffic sites -// and views table size - staybyte - 9 June 2001 -else if (MYSQL_MAJOR_VERSION>=3.23 && $result!=false && mysql_num_rows($result)>0){ +// show table size on mysql >= 3.23 - staybyte - 11 June 2001 +else if (MYSQL_MAJOR_VERSION>=3.23 && isset($tbl_cache)){ echo "\n"; echo ""; echo ""; @@ -34,8 +76,8 @@ else if (MYSQL_MAJOR_VERSION>=3.23 && $result!=false && mysql_num_rows($result)> // temporary if (!empty($strSize)) echo ""; else echo ""; - $i=0; - while ($sts_data=mysql_fetch_array($result)){ + $i=$sum_entries=$sum_size=0; + while (list($keyname,$sts_data)=each($tbl_cache)){ $table=$sts_data["Name"]; $query = "?server=$server&lang=$lang&db=$db&table=$table&goto=db_details.php3"; $bgcolor = $cfgBgcolorOne; @@ -50,16 +92,29 @@ else if (MYSQL_MAJOR_VERSION>=3.23 && $result!=false && mysql_num_rows($result)> ".$sts_data["Rows"]."\n"; - $tblsize=$sts_data["Data_length"]+$sts_data["Index_length"]; - if ($tblsize>1000000000) $tblsize_format=number_format(round($tblsize/107374182.4)/10,1,','.')." GB"; - else if ($tblsize>1000000) $tblsize_format=number_format(round($tblsize/104857.6)/10,1,','.')." MB"; - else if ($tblsize>1000) $tblsize_format=number_format(round($tblsize/102.4)/10,1)." KB"; - echo "\n"; + if (isset($sts_data["Rows"])){ + echo "\n"; + $tblsize=$sts_data["Data_length"]+$sts_data["Index_length"]; + $sum_size+=$tblsize; + $sum_entries+=$sts_data["Rows"]; + list($formated_size,$unit)=format_byte_down($tblsize,3,1); + echo "\n"; + } + else echo "\n"; echo "\n"; } + // Show Summary + echo "\n"; + echo "\n"; + list ($sum_formated,$unit)=format_byte_down($sum_size,3,1); + echo "\n"; + echo "\n"; + echo "\n"; + echo "
".UCFirst($strTable)."$strAction$strSize &zero_rows="> &zero_rows=">   "; - echo ""; - echo $tblsize_format."".number_format($sts_data["Rows"],0,',','.')."  "; + echo ""; + echo "$formated_size $unitin use
"; + if (!empty($strSum)) echo $strSum; + echo "".number_format($sum_entries,0,',','.')."$sum_formated $unit
\n"; } else