From 84485775aa37612ba2bff73e5490648fa8501af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Chapeaux?= Date: Fri, 7 Sep 2001 23:58:19 +0000 Subject: [PATCH] extended to display some stats --- db_printview.php3 | 200 +++++++++++++++++++++++--- tbl_printview.php3 | 344 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 492 insertions(+), 52 deletions(-) diff --git a/db_printview.php3 b/db_printview.php3 index 6c57c83ef..63285e0b4 100755 --- a/db_printview.php3 +++ b/db_printview.php3 @@ -6,51 +6,216 @@ * Gets the variables sent or posted to this script, then displays headers */ require('./grab_globals.inc.php3'); -if (!isset($message)) { - include('./header.inc.php3'); -} else { - show_message($message); -} +require('./header.inc.php3'); /** - * Get the list and count of the tables + * Gets the list of the table in the current db and informations about these + * tables if possible */ -$tables = mysql_list_tables($db); -$num_tables = @mysql_numrows($tables); +// staybyte: speedup view on locked tables - 11 June 2001 +if (MYSQL_INT_VERSION >= 32303) { + // Special speedup for newer MySQL Versions (in 4.0 format changed) + if ($cfgSkipLockedTables == TRUE && MYSQL_INT_VERSION >= 32330) { + $local_query = 'SHOW OPEN TABLES FROM ' . backquote($db); + $result = mysql_query($query) or mysql_die('', $local_query); + // Blending out tables in use + if ($result != FALSE && mysql_num_rows($result) > 0) { + while ($tmp = mysql_fetch_array($result)) { + // if in use memorize tablename + if (eregi('in_use=[1-9]+', $tmp)) { + $sot_cache[$tmp[0]] = TRUE; + } + } + mysql_free_result($result); + + if (isset($sot_cache)) { + $local_query = 'SHOW TABLES FROM ' . backquote($db); + $result = mysql_query($query) or mysql_die('', $local_query); + if ($result != FALSE && mysql_num_rows($result) > 0) { + while ($tmp = mysql_fetch_array($result)) { + if (!isset($sot_cache[$tmp[0]])) { + $local_query = 'SHOW TABLE STATUS FROM ' . backquote($db) . ' LIKE \'' . addslashes($tmp[0]) . '\''; + $sts_result = mysql_query($local_query) or mysql_die('', $local_query); + $sts_tmp = mysql_fetch_array($sts_result); + $tables[] = $sts_tmp; + } else { // table in use + $tables[] = array('Name' => $tmp[0]); + } + } + mysql_free_result($result); + $sot_ready = TRUE; + } + } + } + } + if (!isset($sot_ready)) { + $local_query = 'SHOW TABLE STATUS FROM ' . backquote($db); + $result = mysql_query($local_query) or mysql_die('', $local_query); + if ($result != FALSE && mysql_num_rows($result) > 0) { + while ($sts_tmp = mysql_fetch_array($result)) { + $tables[] = $sts_tmp; + } + mysql_free_result($result); + } + } + $num_tables = (isset($tables) ? count($tables) : 0); +} // end if (MYSQL_INT_VERSION >= 32303) +else { + $result = mysql_list_tables($db); + $num_tables = @mysql_numrows($result); + for ($i = 0; $i < $num_tables; $i++) { + $tables[] = mysql_tablename($result, $i); + } + mysql_free_result($result); +} /** * If there is at least one table, displays the printer friendly view, else * an error message */ -// No table +// 1. No table if ($num_tables == 0) { echo $strNoTablesFound; } -// At least one table -else { - $i = 0; +// 2. Shows table informations on mysql >= 3.23 - staybyte - 11 June 2001 +else if (MYSQL_INT_VERSION >= 32300) { ?> - +
- + + + + + + + + + 0) { + list($formated_size, $unit) = format_byte_down($tblsize, 3, 1); + } else { + list($formated_size, $unit) = format_byte_down($tblsize, 3, 0); + } + } else { + $formated_size = ' - '; + $unit = ''; + } + if (isset($sts_data['Rows'])) { + $sum_entries += $sts_data['Rows']; + } + } + // MyISAM MERGE Table + else if ($mergetable == TRUE) { + $formated_size = ' - '; + $unit = ''; + } + else { + $formated_size = 'unknown'; + $unit = ''; + } + ?> + + + + + + + + + + + + + +
  
+     + + ' . number_format($sts_data['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . '' . "\n"; + } else { + echo number_format($sts_data['Rows'], 0, $number_decimal_separator, $number_thousands_separator) . "\n"; + } + ?> + +    + +   + + +
+    + + + + -- + + + +
+ = 3.23 + +// 3. Shows tables list mysql < 3.23 +else { + $i = 0; + echo "\n"; + ?> + + + + + = 32303) { + $local_query = 'SHOW TABLE STATUS LIKE \'' . sql_addslashes($table, TRUE) . '\''; + $result = mysql_query($local_query) or mysql_die('', $local_query); + $showtable = mysql_fetch_array($result); + $num_rows = (isset($showtable['Rows']) ? $showtable['Rows'] : 0); + $show_comment = (isset($showtable['Comment']) ? $showtable['Comment'] : ''); +} else { + $local_query = 'SELECT COUNT(*) AS count FROM ' . backquote($table); + $result = mysql_query($local_query) or mysql_die('', $local_query); + $showtable = array(); + $num_rows = mysql_result($result, 0, 'count'); + $show_comment = ''; +} // end display comments +mysql_free_result($result); + + +/** + * Gets table keys and retains them + */ +$local_query = 'SHOW KEYS FROM ' . backquote($table); +$result = mysql_query($local_query) or mysql_die('', $local_query); +$primary = ''; +$prev_key = ''; +$prev_seq = 0; +$i = 0; +$pk_array = array(); // will be use to emphasis prim. keys in the table view +while ($row = mysql_fetch_array($result)) { + $ret_keys[] = $row; + // Unset the 'Seq_in_index' value if it's not a composite index - part 1 + if ($i > 0 && $row['Key_name'] != $prev_key && $prev_seq == 1) { + unset($ret_keys[$i-1]['Seq_in_index']); + } + $prev_key = $row['Key_name']; + $prev_seq = $row['Seq_in_index']; + // Backups the list of primary keys + if ($row['Key_name'] == 'PRIMARY') { + $primary .= $row['Column_name'] . ', '; + $pk_array[$row['Column_name']] = 1; + } + $i++; +} // end while +// Unset the 'Seq_in_index' value if it's not a composite index - part 2 +if ($i > 0 && $row['Key_name'] != $prev_key && $prev_seq == 1) { + unset($ret_keys[$i-1]['Seq_in_index']); +} +mysql_free_result($result); + + +/** + * Gets fields properties + */ +$local_query = 'SHOW FIELDS FROM ' . backquote($table); +$result = mysql_query($local_query) or mysql_die('', $local_query); +$fields_cnt = mysql_num_rows($result); + + + /** * Displays the comments of the table is MySQL >= 3.23 */ -if (MYSQL_INT_VERSION >= 32300) { - $local_query = 'SHOW TABLE STATUS LIKE \'' . sql_addslashes($table, TRUE) . '\''; - $result = mysql_query($local_query) or mysql_die('', $local_query); - $row = mysql_fetch_array($result); - if (!empty($row['Comment'])) { - echo $strTableComments . ' : ' . $row['Comment']; - } - mysql_free_result($result); -} // end display comments +if (!empty($show_comment)) { + echo $strTableComments . ' : ' . $row['Comment']; +} /** * Displays the table structure */ -// Gets fields properties -$local_query = 'SHOW FIELDS FROM ' . backquote($table); -$result = mysql_query($local_query) or mysql_die('', $local_query); ?> @@ -97,10 +144,14 @@ while ($row = mysql_fetch_array($result)) { } else { $row['Default'] = htmlspecialchars($row['Default']); } + $field_name = htmlspecialchars($row['Field']); + if (isset($pk_array[$row['Field']])) { + $field_name = '' . $field_name . ''; + } echo "\n"; ?> - + > @@ -120,29 +171,75 @@ echo "\n"; /** * Displays indexes */ -$local_query = 'SHOW KEYS FROM ' . backquote($table); -$result = mysql_query($local_query) or mysql_die('', $local_query); -if (mysql_num_rows($result) > 0) { +$index_count = (isset($ret_keys)) + ? count($ret_keys) + : 0; +if ($index_count > 0) { ?> +

-
- + 
  
-   +   -   +  
    
- - = 32323) { + echo "\n"; + ?> + + + + +  -' . $row['Seq_in_index'] . '-'; + } else { + $key_name = htmlspecialchars($row['Key_name']); + } + if (!isset($row['Sub_part'])) { + $row['Sub_part'] = ''; + } + + if ($row['Key_name'] != $prev_key) { + $j++; + $prev_key = $row['Key_name']; + } + $bgcolor = ($j % 2) ? $cfgBgcolorOne : $cfgBgcolorTwo; + echo "\n"; + ?> + + + + = 32323) { + echo "\n"; + ?> + + + + + + + - - - - 0) { ?>
 
= 32303 && $nonisam == FALSE) { + // Gets some sizes + $mergetable = FALSE; + if (isset($showtable['Type']) && $showtable['Type'] == 'MRG_MyISAM') { + $mergetable = TRUE; + } + list($data_size, $data_unit) = format_byte_down($showtable['Data_length']); + if ($mergetable == FALSE) { + list($index_size, $index_unit) = format_byte_down($showtable['Index_length']); + } + if (isset($showtable['Data_free']) && $showtable['Data_free'] > 0) { + list($free_size, $free_unit) = format_byte_down($showtable['Data_free']); + list($effect_size, $effect_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length'] - $showtable['Data_free']); + } else { + list($effect_size, $effect_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length']); + } + list($tot_size, $tot_unit) = format_byte_down($showtable['Data_length'] + $showtable['Index_length']); + if ($num_rows > 0) { + list($avg_size, $avg_unit) = format_byte_down(($showtable['Data_length'] + $showtable['Index_length']) / $showtable['Rows'], 6, 1); + } + + // Displays them + ?> +

+ + + + + + + + + + + + +
+   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
  +   + + + + + + + + + + + + + + + + 0) { + echo "\n"; + ?> + + + + + 0 && $mergetable == FALSE) { + echo "\n"; + ?> + + + + + + + + + + +
+ +
+ +
 ø + +
 ø + +
 Autoindex + +
+
+ + = 32303 && $nonisam == FALSE) /**