mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-03 14:10:57 +08:00
371 lines
15 KiB
PHP
371 lines
15 KiB
PHP
<?php
|
|
/* $Id: mysql_stats.php,v 1.0 2005/06/20 22:52:24 CoLdFuSiOn Exp $ */
|
|
// vim: expandtab sw=4 ts=4 sts=4:
|
|
|
|
|
|
require "include/bittorrent.php";
|
|
dbconn();
|
|
loggedinorreturn();
|
|
/**
|
|
* Checks if the user is allowed to do what he tries to...
|
|
*/
|
|
if (get_user_class() < UC_SYSOP)
|
|
stderr("Error", "Permission denied.");
|
|
|
|
$GLOBALS["byteUnits"] = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');
|
|
|
|
$day_of_week = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
|
|
$month = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
|
|
// See http://www.php.net/manual/en/function.strftime.php to define the
|
|
// variable below
|
|
$datefmt = '%B %d, %Y at %I:%M %p';
|
|
$timespanfmt = '%s days, %s hours, %s minutes and %s seconds';
|
|
////////////////// FUNCTION LIST /////////////////////////
|
|
/**
|
|
* Formats $value to byte view
|
|
*
|
|
* @param double the value to format
|
|
* @param integer the sensitiveness
|
|
* @param integer the number of decimals to retain
|
|
*
|
|
* @return array the formatted value and its unit
|
|
*
|
|
* @access public
|
|
*
|
|
* @author staybyte
|
|
* @version 1.0 - 20 July 2005
|
|
*/
|
|
function formatByteDown($value, $limes = 6, $comma = 0)
|
|
{
|
|
$dh = pow(10, $comma);
|
|
$li = pow(10, $limes);
|
|
$return_value = $value;
|
|
$unit = $GLOBALS['byteUnits'][0];
|
|
|
|
for ( $d = 6, $ex = 15; $d >= 1; $d--, $ex-=3 ) {
|
|
if (isset($GLOBALS['byteUnits'][$d]) && $value >= $li * pow(10, $ex)) {
|
|
$value = round($value / ( pow(1024, $d) / $dh) ) /$dh;
|
|
$unit = $GLOBALS['byteUnits'][$d];
|
|
break 1;
|
|
} // end if
|
|
} // 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
|
|
|
|
/**
|
|
* Returns a given timespan value in a readable format.
|
|
*
|
|
* @param int the timespan
|
|
*
|
|
* @return string the formatted value
|
|
*/
|
|
function timespanFormat($seconds)
|
|
{
|
|
$return_string = '';
|
|
$days = floor($seconds / 86400);
|
|
if ($days > 0) {
|
|
$seconds -= $days * 86400;
|
|
}
|
|
$hours = floor($seconds / 3600);
|
|
if ($days > 0 || $hours > 0) {
|
|
$seconds -= $hours * 3600;
|
|
}
|
|
$minutes = floor($seconds / 60);
|
|
if ($days > 0 || $hours > 0 || $minutes > 0) {
|
|
$seconds -= $minutes * 60;
|
|
}
|
|
return (string)$days." Days ". (string)$hours." Hours ". (string)$minutes." Minutes ". (string)$seconds." Seconds ";
|
|
}
|
|
|
|
|
|
/**
|
|
* Writes localised date
|
|
*
|
|
* @param string the current timestamp
|
|
*
|
|
* @return string the formatted date
|
|
*
|
|
* @access public
|
|
*/
|
|
function localisedDate($timestamp = -1, $format = '')
|
|
{
|
|
global $datefmt, $month, $day_of_week;
|
|
|
|
if ($format == '') {
|
|
$format = $datefmt;
|
|
}
|
|
|
|
if ($timestamp == -1) {
|
|
$timestamp = time();
|
|
}
|
|
|
|
$date = preg_replace('@%[aA]@', $day_of_week[(int)strftime('%w', $timestamp)], $format);
|
|
$date = preg_replace('@%[bB]@', $month[(int)strftime('%m', $timestamp)-1], $date);
|
|
|
|
return strftime($date, $timestamp);
|
|
} // end of the 'localisedDate()' function
|
|
|
|
////////////////////// END FUNCTION LIST /////////////////////////////////////
|
|
|
|
|
|
stdhead("Stats");
|
|
|
|
/**
|
|
* Displays the sub-page heading
|
|
*/
|
|
echo '<h1 align=center>' . "\n"
|
|
. ' Mysql Server Status' . "\n"
|
|
. '</h1>' . "\n";
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Sends the query and buffers the result
|
|
*/
|
|
$res = @sql_query('SHOW STATUS') or Die(mysql_error());
|
|
while ($row = mysql_fetch_row($res)) {
|
|
$serverStatus[$row[0]] = $row[1];
|
|
}
|
|
@mysql_free_result($res);
|
|
unset($res);
|
|
unset($row);
|
|
|
|
|
|
/**
|
|
* Displays the page
|
|
*/
|
|
//Uptime calculation
|
|
$res = @sql_query('SELECT UNIX_TIMESTAMP() - ' . $serverStatus['Uptime']);
|
|
$row = mysql_fetch_row($res);
|
|
//echo sprintf("Server Status Uptime", timespanFormat($serverStatus['Uptime']), localisedDate($row[0])) . "\n";
|
|
?>
|
|
|
|
<table id="torrenttable" border="1"><tr><td>
|
|
|
|
<?php
|
|
print("This MySQL server has been running for ". timespanFormat($serverStatus['Uptime']) .". It started up on ". localisedDate($row[0])) . "\n";
|
|
?>
|
|
|
|
</td></tr></table>
|
|
|
|
<?php
|
|
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);
|
|
?>
|
|
|
|
<ul>
|
|
<li>
|
|
<b>Server traffic:</b> These tables show the network traffic statistics of this MySQL server since its startup
|
|
<br />
|
|
<table border="0">
|
|
<tr>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th colspan="2" bgcolor="lightgrey"> Traffic </th>
|
|
<th bgcolor="lightgrey"> Per Hour </th>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> Received </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo join(' ', formatByteDown($serverStatus['Bytes_received'])); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo join(' ', formatByteDown($serverStatus['Bytes_received'] * 3600 / $serverStatus['Uptime'])); ?> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> Sent </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo join(' ', formatByteDown($serverStatus['Bytes_sent'])); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo join(' ', formatByteDown($serverStatus['Bytes_sent'] * 3600 / $serverStatus['Uptime'])); ?> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="lightgrey"> Total </td>
|
|
<td bgcolor="lightgrey" align="right"> <?php echo join(' ', formatByteDown($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent'])); ?> </td>
|
|
<td bgcolor="lightgrey" align="right"> <?php echo join(' ', formatByteDown(($serverStatus['Bytes_received'] + $serverStatus['Bytes_sent']) * 3600 / $serverStatus['Uptime'])); ?> </td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th colspan="2" bgcolor="lightgrey"> Connections </th>
|
|
<th bgcolor="lightgrey"> ø Per Hour </th>
|
|
<th bgcolor="lightgrey"> % </th>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> Failed Attempts </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format($serverStatus['Aborted_connects'], 0, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($serverStatus['Aborted_connects'] * 3600 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo ($serverStatus['Connections'] > 0 ) ? number_format(($serverStatus['Aborted_connects'] * 100 / $serverStatus['Connections']), 2, '.', ',') . ' %' : '---'; ?> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> Aborted Clients </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format($serverStatus['Aborted_clients'], 0, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($serverStatus['Aborted_clients'] * 3600 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo ($serverStatus['Connections'] > 0 ) ? number_format(($serverStatus['Aborted_clients'] * 100 / $serverStatus['Connections']), 2 , '.', ',') . ' %' : '---'; ?> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="lightgrey"> Total </td>
|
|
<td bgcolor="lightgrey" align="right"> <?php echo number_format($serverStatus['Connections'], 0, '.', ','); ?> </td>
|
|
<td bgcolor="lightgrey" align="right"> <?php echo number_format(($serverStatus['Connections'] * 3600 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="lightgrey" align="right"> <?php echo number_format(100, 2, '.', ','); ?> % </td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<br />
|
|
<li>
|
|
<?php print("<b>Query Statistics:</b> Since it's start up, ". number_format($serverStatus['Questions'], 0, '.', ',')." queries have been sent to the server.\n"); ?>
|
|
<table border="0">
|
|
<tr>
|
|
<td colspan="2">
|
|
<br />
|
|
<table id="torrenttable" border="0" align="right">
|
|
<tr>
|
|
<th bgcolor="lightgrey"> Total </th>
|
|
<th bgcolor="lightgrey"> ø Per Hour </th>
|
|
<th bgcolor="lightgrey"> ø Per Minute </th>
|
|
<th bgcolor="lightgrey"> ø Per Second </th>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format($serverStatus['Questions'], 0, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($serverStatus['Questions'] * 3600 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($serverStatus['Questions'] * 60 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($serverStatus['Questions'] / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th colspan="2" bgcolor="lightgrey"> Query Type </th>
|
|
<th bgcolor="lightgrey"> ø Per Hour </th>
|
|
<th bgcolor="lightgrey"> % </th>
|
|
</tr>
|
|
<?php
|
|
|
|
$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.
|
|
?>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> <?php echo htmlspecialchars($name); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format($value, 0, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($value * 3600 / $serverStatus['Uptime']), 2, '.', ','); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo number_format(($value * 100 / ($serverStatus['Questions'] - $serverStatus['Connections'])), 2, '.', ','); ?> % </td>
|
|
</tr>
|
|
<?php
|
|
$useBgcolorOne = !$useBgcolorOne;
|
|
if (++$countRows == ceil(count($queryStats) / 2)) {
|
|
$useBgcolorOne = TRUE;
|
|
?>
|
|
</table>
|
|
</td>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th colspan="2" bgcolor="lightgrey"> Query Type </th>
|
|
<th bgcolor="lightgrey"> ø Per Hour </th>
|
|
<th bgcolor="lightgrey"> % </th>
|
|
</tr>
|
|
<?php
|
|
}
|
|
}
|
|
unset($countRows);
|
|
unset($useBgcolorOne);
|
|
?>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<?php
|
|
//Unset used variables
|
|
unset($serverStatus['Aborted_clients']);
|
|
unset($serverStatus['Aborted_connects']);
|
|
unset($serverStatus['Bytes_received']);
|
|
unset($serverStatus['Bytes_sent']);
|
|
unset($serverStatus['Connections']);
|
|
unset($serverStatus['Questions']);
|
|
unset($serverStatus['Uptime']);
|
|
|
|
if (!empty($serverStatus)) {
|
|
?>
|
|
<br />
|
|
<li>
|
|
<b>More status variables</b><br />
|
|
<table border="0">
|
|
<tr>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th bgcolor="lightgrey"> Variable </th>
|
|
<th bgcolor="lightgrey"> Value </th>
|
|
</tr>
|
|
<?php
|
|
$useBgcolorOne = TRUE;
|
|
$countRows = 0;
|
|
foreach($serverStatus AS $name => $value) {
|
|
?>
|
|
<tr>
|
|
<td bgcolor="#EFF3FF"> <?php echo htmlspecialchars(str_replace('_', ' ', $name)); ?> </td>
|
|
<td bgcolor="#EFF3FF" align="right"> <?php echo htmlspecialchars($value); ?> </td>
|
|
</tr>
|
|
<?php
|
|
$useBgcolorOne = !$useBgcolorOne;
|
|
if (++$countRows == ceil(count($serverStatus) / 3) || $countRows == ceil(count($serverStatus) * 2 / 3)) {
|
|
$useBgcolorOne = TRUE;
|
|
?>
|
|
</table>
|
|
</td>
|
|
<td valign="top">
|
|
<table id="torrenttable" border="0">
|
|
<tr>
|
|
<th bgcolor="lightgrey"> Variable </th>
|
|
<th bgcolor="lightgrey"> Value </th>
|
|
</tr>
|
|
<?php
|
|
}
|
|
}
|
|
unset($useBgcolorOne);
|
|
?>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</li>
|
|
<?php
|
|
}
|
|
|
|
?>
|
|
</ul>
|
|
|
|
|
|
<?php
|
|
stdfoot();
|