} // end for if ($unit != $GLOBALS['byteUnits'][0]) { $return_value = number_format($value, $comma, '.', ','); } else { $return_value = number_format($value, 0, '.', ','); } return array($return_value, $unit); } // end of the 'formatByteDown' function ////////////////// END FUNCTION LIST ///////////////////////// $HTMLOUT = ''; $HTMLOUT .= "<h2>Mysql Server Table Status</h2>\r\n\r\n <!-- Start table -->\r\n\r\n <table class='torrenttable' border='1' cellpadding='4px'>\r\n\r\n <!-- Start table headers -->\r\n <tr>\r\n\r\n <td class='colhead'>Name</td>\r\n \r\n <td class='colhead'>Size</td>\r\n \r\n <td class='colhead'>Rows</td>\r\n \r\n <td class='colhead'>Avg row lengtd</td>\r\n \r\n <td class='colhead'>Data lengtd</td>\r\n \r\n <!-- <td class='colhead'>Max_data_lengtd</td> -->\r\n \r\n <td class='colhead'>Index length</td>\r\n \r\n <td class='colhead'>Overhead</td>\r\n \r\n <!-- <td class='colhead'>Auto_increment</td> -->\r\n \r\n <!-- <td class='colhead'>Timings</td> -->\r\n \r\n </tr>\r\n \r\n <!-- End table headers -->"; $count = 0; $res = @mysql_query("SHOW TABLE STATUS FROM {$TBDEV['mysql_db']}") or stderr(__FILE__, __LINE__); while ($row = mysql_fetch_array($res)) { list($formatted_Avg, $formatted_Abytes) = byteformat($row['Avg_row_length']); list($formatted_Dlength, $formatted_Dbytes) = byteformat($row['Data_length']); list($formatted_Ilength, $formatted_Ibytes) = byteformat($row['Index_length']); list($formatted_Dfree, $formatted_Fbytes) = byteformat($row['Data_free']); $tablesize = $row['Data_length'] + $row['Index_length']; list($formatted_Tsize, $formatted_Tbytes) = byteformat($tablesize, 3, $tablesize > 0 ? 1 : 0); $thispage = "&Do=T&table=" . urlencode($row['Name']); $overhead = $formatted_Dfree > 0 ? "<a href='admin.php?action=mysql_overview{$thispage}'><font color='red'><b>{$formatted_Dfree} {$formatted_Fbytes}</b></font></a>" : "{$formatted_Dfree} {$formatted_Fbytes}"; $HTMLOUT .= "<tr align='right'>\r\n <td align='left'><span style='font-weight:bold;'>" . strtoupper($row['Name']) . "</span></td>\r\n <td>{$formatted_Tsize} {$formatted_Tbytes}</td>\r\n <td>{$row['Rows']}</td>\r\n <td>{$formatted_Avg} {$formatted_Abytes}</td>\r\n <td>{$formatted_Dlength} {$formatted_Dbytes}</td>\r\n <td>{$formatted_Ilength} {$formatted_Ibytes}</td>\r\n <td>{$overhead}</td>\r\n </tr>\r\n <tr>\r\n <td colspan='7' align='right'><i><b>Row Format:</b></i> {$row['Row_format']}\r\n <br /><i><b>Create Time:</b></i> {$row['Create_time']}\r\n <br /><i><b>Update Time:</b></i> {$row['Update_time']}\r\n <br /><i><b>Check Time:</b></i> {$row['Check_time']}</td>\r\n </tr>"; //do sums $count++; } //end while $HTMLOUT .= "<tr>\r\n <td><b>Tables: {$count}</b></td>\r\n <td colspan='6' align='right'>If it's <span style='font-weight:bold;color:red;'>RED</span> it probably needs optimising!!</td>\r\n </tr>\r\n\r\n <!-- End table -->\r\n </table>"; print stdhead("MySQL Overview") . $HTMLOUT . stdfoot();
mysql_free_result($res); unset($res); unset($row); //Get query statistics $queryStats = array(); $tmp_array = $serverStatus; foreach ($tmp_array as $name => $value) { if (substr($name, 0, 4) == 'Com_') { $queryStats[str_replace('_', ' ', substr($name, 4))] = $value; unset($serverStatus[$name]); } } unset($tmp_array); $TRAFFIC_STATS = ''; $TRAFFIC_STATS_HEAD = "<!-- Server Traffic -->\r\n <b>Server traffic:</b> These tables show the network traffic statistics of this MySQL server since its startup"; $TRAFFIC_STATS .= "<table class='torrenttable' width='100%' border='0'>\r\n <tr>\r\n <td colspan='3' bgcolor='lightgrey'> Traffic Per Hour </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='#EFF3FF'> Received </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'])) . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'] * 3600 / $serverStatus['Uptime'])) . " </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='#EFF3FF'> Sent </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . join(' ', byteformat($serverStatus['Bytes_sent'])) . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . join(' ', byteformat($serverStatus['Bytes_sent'] * 3600 / $serverStatus['Uptime'])) . " </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='lightgrey'> Total </td>\r\n <td bgcolor='lightgrey' align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent'])) . " </td>\r\n <td bgcolor='lightgrey' align='right'> " . join(' ', byteformat(($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent']) * 3600 / $serverStatus['Uptime'])) . " </td>\r\n </tr>\r\n </table>"; $TRAFFIC_STATS2 = "<table class='torrenttable' width='100%' border='0'>\r\n <tr>\r\n <td colspan='4' bgcolor='lightgrey'> Connections ø Per Hour </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='#EFF3FF'> Failed Attempts </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Aborted_connects'], 0, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Aborted_connects'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . ($serverStatus['Connections'] > 0 ? number_format($serverStatus['Aborted_connects'] * 100 / $serverStatus['Connections'], 2, '.', ',') . " %" : "---" . " ") . "</td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='#EFF3FF'> Aborted Clients </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Aborted_clients'], 0, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Aborted_clients'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . ($serverStatus['Connections'] > 0 ? number_format($serverStatus['Aborted_clients'] * 100 / $serverStatus['Connections'], 2, '.', ',') . ' %' : '---') . " </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='lightgrey'> Total </td>\r\n <td bgcolor='lightgrey' align='right'> " . number_format($serverStatus['Connections'], 0, '.', ',') . " </td>\r\n <td bgcolor='lightgrey' align='right'> " . number_format($serverStatus['Connections'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='lightgrey' align='right'> " . number_format(100, 2, '.', ',') . " % </td>\r\n </tr>\r\n </table>"; $QUERY_STATS = ''; $QUERY_STATS .= "<!-- Queries -->\r\n <b>Query Statistics:</b> Since it's start up, " . number_format($serverStatus['Questions'], 0, '.', ',') . " queries have been sent to the server.<br />\r\n\r\n <table class='torrenttable' width='100%' border='0'>\r\n <tr>\r\n <td bgcolor='lightgrey'> Total </td>\r\n <td bgcolor='lightgrey'> ø Per Hour </td>\r\n <td bgcolor='lightgrey'> ø Per Minute </td>\r\n <td bgcolor='lightgrey'> ø Per Second </td>\r\n </tr>\r\n <tr>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Questions'], 0, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Questions'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Questions'] * 60 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($serverStatus['Questions'] / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n </tr>\r\n </table><br />"; $QUERY_STATS .= "<table class='torrenttable' width='100%' border='0'>\r\n <tr>\r\n <td colspan='2' bgcolor='lightgrey'> Query Type </td>\r\n <td bgcolor='lightgrey'> ø Per Hour </td>\r\n <td bgcolor='lightgrey'> % </td>\r\n </tr>"; $useBgcolorOne = TRUE; $countRows = 0; foreach ($queryStats as $name => $value) { // For the percentage column, use Questions - Connections, because // the number of connections is not an item of the Query types // but is included in Questions. Then the total of the percentages is 100. $QUERY_STATS .= "<tr>\r\n <td bgcolor='#EFF3FF'> " . htmlspecialchars($name) . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($value, 0, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($value * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\r\n <td bgcolor='#EFF3FF' align='right'> " . number_format($value * 100 / ($serverStatus['Questions'] - $serverStatus['Connections']), 2, '.', ',') . " % </td>\r\n </tr>"; } unset($countRows); unset($useBgcolorOne); $QUERY_STATS .= "</table>";
mysqli_free_result($res) || is_object($res) && get_class($res) == "mysqli_result" ? true : false; unset($res); unset($row); //Get query statistics $queryStats = array(); $tmp_array = $serverStatus; foreach ($tmp_array as $name => $value) { if (substr($name, 0, 4) == 'Com_') { $queryStats[str_replace('_', ' ', substr($name, 4))] = $value; unset($serverStatus[$name]); } } unset($tmp_array); $TRAFFIC_STATS = ''; $TRAFFIC_STATS_HEAD = "<!-- Server Traffic -->\n <b>{$lang['mysql_stats_traffic_per_hour']}</b>{$lang['mysql_stats_tables']}"; $TRAFFIC_STATS .= "<table class='torrenttable' width='100%' border='0'>\n <tr>\n <td colspan='3' bgcolor='grey'>{$lang['mysql_stats_traffic_per_hour']}</td>\n </tr>\n <tr>\n <td>{$lang['mysql_stats_received']}</td>\n <td align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'])) . " </td>\n <td align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'] * 3600 / $serverStatus['Uptime'])) . " </td>\n </tr>\n <tr>\n <td>{$lang['mysql_stats_sent']}</td>\n <td align='right'> " . join(' ', byteformat($serverStatus['Bytes_sent'])) . " </td>\n <td align='right'> " . join(' ', byteformat($serverStatus['Bytes_sent'] * 3600 / $serverStatus['Uptime'])) . " </td>\n </tr>\n <tr>\n <td bgcolor='grey'>&{$lang['mysql_stats_total']}</td>\n <td bgcolor='grey' align='right'> " . join(' ', byteformat($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent'])) . " </td>\n <td bgcolor='grey' align='right'> " . join(' ', byteformat(($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent']) * 3600 / $serverStatus['Uptime'])) . " </td>\n </tr>\n </table>"; $TRAFFIC_STATS2 = "<table class='torrenttable' width='100%' border='0'>\n <tr>\n <td colspan='4' bgcolor='grey'>{$lang['mysql_stats_connection_per_hour']}</td>\n </tr>\n <tr>\n <td>{$lang['mysql_stats_failed']}</td>\n <td align='right'> " . number_format($serverStatus['Aborted_connects'], 0, '.', ',') . " </td>\n <td align='right'> " . number_format($serverStatus['Aborted_connects'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td align='right'> " . ($serverStatus['Connections'] > 0 ? number_format($serverStatus['Aborted_connects'] * 100 / $serverStatus['Connections'], 2, '.', ',') . " %" : "---" . " ") . "</td>\n </tr>\n <tr>\n <td>{$lang['mysql_stats_aborted']}</td>\n <td align='right'> " . number_format($serverStatus['Aborted_clients'], 0, '.', ',') . " </td>\n <td align='right'> " . number_format($serverStatus['Aborted_clients'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td align='right'> " . ($serverStatus['Connections'] > 0 ? number_format($serverStatus['Aborted_clients'] * 100 / $serverStatus['Connections'], 2, '.', ',') . ' %' : '---') . " </td>\n </tr>\n <tr>\n <td bgcolor='grey'>{$lang['mysql_stats_total']}</td>\n <td bgcolor='grey' align='right'> " . number_format($serverStatus['Connections'], 0, '.', ',') . " </td>\n <td bgcolor='grey' align='right'> " . number_format($serverStatus['Connections'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td bgcolor='grey' align='right'> " . number_format(100, 2, '.', ',') . " % </td>\n </tr>\n </table>"; $QUERY_STATS = ''; $QUERY_STATS .= "<!-- Queries -->\n <b>{$lang['mysql_stats_query']}</b>{$lang['mysql_stats_since']}" . number_format($serverStatus['Questions'], 0, '.', ',') . "{$lang['mysql_stats_querys']}<br />\n\n <table class='torrenttable' width='100%' border='0'>\n <tr>\n <td bgcolor='grey'>{$lang['mysql_stats_total']}</td>\n <td bgcolor='grey'>{$lang['mysql_stats_per_hour']}</td>\n <td bgcolor='grey'>{$lang['mysql_stats_per_minute']}</td>\n <td bgcolor='grey'>{$lang['mysql_stats_per_seconds']}</td>\n </tr>\n <tr>\n <td align='right'> " . number_format($serverStatus['Questions'], 0, '.', ',') . " </td>\n <td align='right'> " . number_format($serverStatus['Questions'] * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td align='right'> " . number_format($serverStatus['Questions'] * 60 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td align='right'> " . number_format($serverStatus['Questions'] / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n </tr>\n </table><br />"; $QUERY_STATS .= "<table class='torrenttable' width='100%' border='0'>\n <tr>\n <td colspan='2' bgcolor='grey'>{$lang['mysql_stats_query_type']}</td>\n <td bgcolor='grey'>{$lang['mysql_stats_per_hour']};</td>\n <td bgcolor='grey'> % </td>\n </tr>"; $useBgcolorOne = TRUE; $countRows = 0; foreach ($queryStats as $name => $value) { // For the percentage column, use Questions - Connections, because // the number of connections is not an item of the Query types // but is included in Questions. Then the total of the percentages is 100. $QUERY_STATS .= "<tr>\n <td> " . htmlsafechars($name) . " </td>\n <td align='right'> " . number_format($value, 0, '.', ',') . " </td>\n <td align='right'> " . number_format($value * 3600 / $serverStatus['Uptime'], 2, '.', ',') . " </td>\n <td align='right'> " . number_format($value * 100 / ($serverStatus['Questions'] - $serverStatus['Connections']), 2, '.', ',') . " % </td>\n </tr>"; } unset($countRows); unset($useBgcolorOne); $QUERY_STATS .= "</table>";