<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * ServerStatusData class * Used by server_status_*.php pages * * @package PhpMyAdmin */ namespace PMA\libraries; /** * This class provides data about the server status * * All properties of the class are read-only * * TODO: Use lazy initialisation for some of the properties * since not all of the server_status_*.php pages need * all the data that this class provides. * * @package PhpMyAdmin */ class ServerStatusData { public $status; public $sections; public $variables; public $used_queries; public $allocationMap; public $links; public $db_isLocal; public $section; public $sectionUsed; public $selfUrl; public $dataLoaded; /** * An empty setter makes the above properties read-only * * @param string $a key * @param mixed $b value * * @return void */ public function __set($a, $b) { // Discard everything } /** * Gets the allocations for constructor * * @return array */ private function _getAllocations() { return array( // variable name => section // variable names match when they begin with the given string 'Com_' => 'com', 'Innodb_' => 'innodb', 'Ndb_' => 'ndb', 'Handler_' => 'handler', 'Qcache_' => 'qcache', 'Threads_' => 'threads', 'Slow_launch_threads' => 'threads', 'Binlog_cache_' => 'binlog_cache', 'Created_tmp_' => 'created_tmp', 'Key_' => 'key', 'Delayed_' => 'delayed', 'Not_flushed_delayed_rows' => 'delayed', 'Flush_commands' => 'query', 'Last_query_cost' => 'query', 'Slow_queries' => 'query', 'Queries' => 'query', 'Prepared_stmt_count' => 'query', 'Select_' => 'select', 'Sort_' => 'sort', 'Open_tables' => 'table', 'Opened_tables' => 'table', 'Open_table_definitions' => 'table', 'Opened_table_definitions' => 'table', 'Table_locks_' => 'table', 'Rpl_status' => 'repl', 'Slave_' => 'repl', 'Tc_' => 'tc', 'Ssl_' => 'ssl', 'Open_files' => 'files', 'Open_streams' => 'files', 'Opened_files' => 'files', ); } /** * Gets the sections for constructor * * @return array */ private function _getSections() { return array( // section => section name (description) 'com' => 'Com', 'query' => __('SQL query'), 'innodb' => 'InnoDB', 'ndb' => 'NDB', 'handler' => __('Handler'), 'qcache' => __('Query cache'), 'threads' => __('Threads'), 'binlog_cache' => __('Binary log'), 'created_tmp' => __('Temporary data'), 'delayed' => __('Delayed inserts'), 'key' => __('Key cache'), 'select' => __('Joins'), 'repl' => __('Replication'), 'sort' => __('Sorting'), 'table' => __('Tables'), 'tc' => __('Transaction coordinator'), 'files' => __('Files'), 'ssl' => 'SSL', 'other' => __('Other') ); } /** * Gets the links for constructor * * @return array */ private function _getLinks() { $links = array(); // variable or section name => (name => url) $links['table'][__('Flush (close) all tables')] = $this->selfUrl . PMA_URL_getCommon( array( 'flush' => 'TABLES' ) ); $links['table'][__('Show open tables')] = 'sql.php' . PMA_URL_getCommon( array( 'sql_query' => 'SHOW OPEN TABLES', 'goto' => $this->selfUrl, ) ); if ($GLOBALS['replication_info']['master']['status']) { $links['repl'][__('Show slave hosts')] = 'sql.php' . PMA_URL_getCommon( array( 'sql_query' => 'SHOW SLAVE HOSTS', 'goto' => $this->selfUrl, ) ); $links['repl'][__('Show master status')] = '#replication_master'; } if ($GLOBALS['replication_info']['slave']['status']) { $links['repl'][__('Show slave status')] = '#replication_slave'; } $links['repl']['doc'] = 'replication'; $links['qcache'][__('Flush query cache')] = $this->selfUrl . PMA_URL_getCommon( array( 'flush' => 'QUERY CACHE' ) ); $links['qcache']['doc'] = 'query_cache'; $links['threads']['doc'] = 'mysql_threads'; $links['key']['doc'] = 'myisam_key_cache'; $links['binlog_cache']['doc'] = 'binary_log'; $links['Slow_queries']['doc'] = 'slow_query_log'; $links['innodb'][__('Variables')] = 'server_engines.php?engine=InnoDB&' . PMA_URL_getCommon(array(), 'html', ''); $links['innodb'][__('InnoDB Status')] = 'server_engines.php' . PMA_URL_getCommon( array( 'engine' => 'InnoDB', 'page' => 'Status' ) ); $links['innodb']['doc'] = 'innodb'; return($links); } /** * Calculate some values * * @param array $server_status contains results of SHOW GLOBAL STATUS * @param array $server_variables contains results of SHOW GLOBAL VARIABLES * * @return array $server_status */ private function _calculateValues($server_status, $server_variables) { // Key_buffer_fraction if (isset($server_status['Key_blocks_unused']) && isset($server_variables['key_cache_block_size']) && isset($server_variables['key_buffer_size']) && $server_variables['key_buffer_size'] != 0 ) { $server_status['Key_buffer_fraction_%'] = 100 - $server_status['Key_blocks_unused'] * $server_variables['key_cache_block_size'] / $server_variables['key_buffer_size'] * 100; } elseif (isset($server_status['Key_blocks_used']) && isset($server_variables['key_buffer_size']) && $server_variables['key_buffer_size'] != 0 ) { $server_status['Key_buffer_fraction_%'] = $server_status['Key_blocks_used'] * 1024 / $server_variables['key_buffer_size']; } // Ratio for key read/write if (isset($server_status['Key_writes']) && isset($server_status['Key_write_requests']) && $server_status['Key_write_requests'] > 0 ) { $key_writes = $server_status['Key_writes']; $key_write_requests = $server_status['Key_write_requests']; $server_status['Key_write_ratio_%'] = 100 * $key_writes / $key_write_requests; } if (isset($server_status['Key_reads']) && isset($server_status['Key_read_requests']) && $server_status['Key_read_requests'] > 0 ) { $key_reads = $server_status['Key_reads']; $key_read_requests = $server_status['Key_read_requests']; $server_status['Key_read_ratio_%'] = 100 * $key_reads / $key_read_requests; } // Threads_cache_hitrate if (isset($server_status['Threads_created']) && isset($server_status['Connections']) && $server_status['Connections'] > 0 ) { $server_status['Threads_cache_hitrate_%'] = 100 - $server_status['Threads_created'] / $server_status['Connections'] * 100; } return $server_status; } /** * Sort variables into arrays * * @param array $server_status contains results of SHOW GLOBAL STATUS * @param array $allocations allocations for sections * @param array $allocationMap map variables to their section * @param array $sectionUsed is a section used? * @param array $used_queries used queries * * @return array ($allocationMap, $sectionUsed, $used_queries) */ private function _sortVariables( $server_status, $allocations, $allocationMap, $sectionUsed, $used_queries ) { foreach ($server_status as $name => $value) { $section_found = false; foreach ($allocations as $filter => $section) { if (mb_strpos($name, $filter) !== false) { $allocationMap[$name] = $section; $sectionUsed[$section] = true; $section_found = true; if ($section == 'com' && $value > 0) { $used_queries[$name] = $value; } break; // Only exits inner loop } } if (! $section_found) { $allocationMap[$name] = 'other'; $sectionUsed['other'] = true; } } return array($allocationMap, $sectionUsed, $used_queries); } /** * Constructor */ public function __construct() { $this->selfUrl = basename($GLOBALS['PMA_PHP_SELF']); // get status from server $server_status_result = $GLOBALS['dbi']->tryQuery('SHOW GLOBAL STATUS'); $server_status = array(); if ($server_status_result === false) { $this->dataLoaded = false; } else { $this->dataLoaded = true; while ($arr = $GLOBALS['dbi']->fetchRow($server_status_result)) { $server_status[$arr[0]] = $arr[1]; } $GLOBALS['dbi']->freeResult($server_status_result); } // for some calculations we require also some server settings $server_variables = $GLOBALS['dbi']->fetchResult( 'SHOW GLOBAL VARIABLES', 0, 1 ); // cleanup of some deprecated values $server_status = self::cleanDeprecated($server_status); // calculate some values $server_status = $this->_calculateValues( $server_status, $server_variables ); // split variables in sections $allocations = $this->_getAllocations(); $sections = $this->_getSections(); // define some needful links/commands $links = $this->_getLinks(); // Variable to contain all com_ variables (query statistics) $used_queries = array(); // Variable to map variable names to their respective section name // (used for js category filtering) $allocationMap = array(); // Variable to mark used sections $sectionUsed = array(); // sort vars into arrays list( $allocationMap, $sectionUsed, $used_queries ) = $this->_sortVariables( $server_status, $allocations, $allocationMap, $sectionUsed, $used_queries ); // admin commands are not queries (e.g. they include COM_PING, // which is excluded from $server_status['Questions']) unset($used_queries['Com_admin_commands']); // Set all class properties $this->db_isLocal = false; $serverHostToLower = mb_strtolower( $GLOBALS['cfg']['Server']['host'] ); if ($serverHostToLower === 'localhost' || $GLOBALS['cfg']['Server']['host'] === '127.0.0.1' || $GLOBALS['cfg']['Server']['host'] === '::1' ) { $this->db_isLocal = true; } $this->status = $server_status; $this->sections = $sections; $this->variables = $server_variables; $this->used_queries = $used_queries; $this->allocationMap = $allocationMap; $this->links = $links; $this->sectionUsed = $sectionUsed; } /** * cleanup of some deprecated values * * @param array $server_status status array to process * * @return array */ public static function cleanDeprecated($server_status) { $deprecated = array( 'Com_prepare_sql' => 'Com_stmt_prepare', 'Com_execute_sql' => 'Com_stmt_execute', 'Com_dealloc_sql' => 'Com_stmt_close', ); foreach ($deprecated as $old => $new) { if (isset($server_status[$old]) && isset($server_status[$new])) { unset($server_status[$old]); } } return $server_status; } /** * Generates menu HTML * * @return string */ public function getMenuHtml() { $url_params = PMA_URL_getCommon(); $items = array( array( 'name' => __('Server'), 'url' => 'server_status.php' ), array( 'name' => __('Processes'), 'url' => 'server_status_processes.php' ), array( 'name' => __('Query statistics'), 'url' => 'server_status_queries.php' ), array( 'name' => __('All status variables'), 'url' => 'server_status_variables.php' ), array( 'name' => __('Monitor'), 'url' => 'server_status_monitor.php' ), array( 'name' => __('Advisor'), 'url' => 'server_status_advisor.php' ) ); $retval = '<ul id="topmenu2">'; foreach ($items as $item) { $class = ''; if ($item['url'] === $this->selfUrl) { $class = ' class="tabactive"'; } $retval .= '<li>'; $retval .= '<a' . $class; $retval .= ' href="' . $item['url'] . $url_params . '">'; $retval .= $item['name']; $retval .= '</a>'; $retval .= '</li>'; } $retval .= '</ul>'; $retval .= '<div class="clearfloat"></div>'; return $retval; } /** * Builds a <select> list for refresh rates * * @param string $name Name of select * @param int $defaultRate Currently chosen rate * @param array $refreshRates List of refresh rates * * @return string */ public static function getHtmlForRefreshList($name, $defaultRate = 5, $refreshRates = Array(1, 2, 5, 10, 20, 40, 60, 120, 300, 600) ) { $return = '<select name="' . $name . '" id="id_' . $name . '" class="refreshRate">'; foreach ($refreshRates as $rate) { $selected = ($rate == $defaultRate)?' selected="selected"':''; $return .= '<option value="' . $rate . '"' . $selected . '>'; if ($rate < 60) { $return .= sprintf( _ngettext('%d second', '%d seconds', $rate), $rate ); } else { $rate = $rate / 60; $return .= sprintf( _ngettext('%d minute', '%d minutes', $rate), $rate ); } $return .= '</option>'; } $return .= '</select>'; return $return; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
bfShapeFiles | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
controllers | Folder | 0755 |
|
|
dbi | Folder | 0755 |
|
|
di | Folder | 0755 |
|
|
engines | Folder | 0755 |
|
|
gis | Folder | 0755 |
|
|
navigation | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
properties | Folder | 0755 |
|
|
rte | Folder | 0755 |
|
|
sql-parser | Folder | 0755 |
|
|
Advisor.php | File | 15.13 KB | 0644 |
|
Config.php | File | 54.7 KB | 0644 |
|
Console.php | File | 14.82 KB | 0644 |
|
DatabaseInterface.php | File | 95.6 KB | 0644 |
|
DbList.php | File | 1.9 KB | 0644 |
|
DbQbe.php | File | 68.87 KB | 0644 |
|
DbSearch.php | File | 17.21 KB | 0644 |
|
DisplayResults.php | File | 206 KB | 0644 |
|
Error.php | File | 12.7 KB | 0644 |
|
ErrorHandler.php | File | 16.48 KB | 0644 |
|
File.php | File | 18.82 KB | 0644 |
|
Font.php | File | 4.24 KB | 0644 |
|
Footer.php | File | 10.52 KB | 0644 |
|
Header.php | File | 25.34 KB | 0644 |
|
Index.php | File | 23.79 KB | 0644 |
|
IndexColumn.php | File | 4.46 KB | 0644 |
|
Language.php | File | 4.27 KB | 0644 |
|
LanguageManager.php | File | 20.75 KB | 0644 |
|
Linter.php | File | 5.02 KB | 0644 |
|
ListAbstract.php | File | 3.15 KB | 0644 |
|
ListDatabase.php | File | 4.62 KB | 0644 |
|
Menu.php | File | 21.14 KB | 0644 |
|
Message.php | File | 18.67 KB | 0644 |
|
OutputBuffering.php | File | 3.59 KB | 0644 |
|
PDF.php | File | 3.94 KB | 0644 |
|
Partition.php | File | 7.26 KB | 0644 |
|
Psr4Autoloader.php | File | 4.85 KB | 0644 |
|
RecentFavoriteTable.php | File | 11.78 KB | 0644 |
|
Response.php | File | 12.61 KB | 0644 |
|
SavedSearches.php | File | 11.67 KB | 0644 |
|
Scripts.php | File | 7.38 KB | 0644 |
|
ServerStatusData.php | File | 15.72 KB | 0644 |
|
StorageEngine.php | File | 13.61 KB | 0644 |
|
SubPartition.php | File | 3.52 KB | 0644 |
|
SysInfo.php | File | 799 B | 0644 |
|
SysInfoLinux.php | File | 1.92 KB | 0644 |
|
SysInfoSunOS.php | File | 1.86 KB | 0644 |
|
SysInfoWINNT.php | File | 3.08 KB | 0644 |
|
SystemDatabase.php | File | 3.66 KB | 0644 |
|
Table.php | File | 88.12 KB | 0644 |
|
Template.php | File | 4.45 KB | 0644 |
|
Theme.php | File | 11.34 KB | 0644 |
|
ThemeManager.php | File | 12.91 KB | 0644 |
|
Tracker.php | File | 30.35 KB | 0644 |
|
Types.php | File | 6.08 KB | 0644 |
|
TypesMySQL.php | File | 17.26 KB | 0644 |
|
Util.php | File | 172.46 KB | 0644 |
|
VersionInformation.php | File | 7.87 KB | 0644 |
|
ZipFile.php | File | 6.63 KB | 0644 |
|
advisor.lib.php | File | 1.6 KB | 0644 |
|
advisory_rules.txt | File | 25.94 KB | 0644 |
|
autoloader.php | File | 450 B | 0644 |
|
bookmark.lib.php | File | 8.5 KB | 0644 |
|
browse_foreigners.lib.php | File | 9.83 KB | 0644 |
|
central_columns.lib.php | File | 49.38 KB | 0644 |
|
charset_conversion.lib.php | File | 3.54 KB | 0644 |
|
check_user_privileges.lib.php | File | 10.65 KB | 0644 |
|
cleanup.lib.php | File | 1.29 KB | 0644 |
|
common.inc.php | File | 34.38 KB | 0644 |
|
config.default.php | File | 66.5 KB | 0644 |
|
config.values.php | File | 10.17 KB | 0644 |
|
core.lib.php | File | 29.94 KB | 0644 |
|
create_addfield.lib.php | File | 15.68 KB | 0644 |
|
database_interface.inc.php | File | 2.63 KB | 0644 |
|
db_common.inc.php | File | 3.12 KB | 0644 |
|
db_designer.lib.php | File | 10.4 KB | 0644 |
|
db_table_exists.lib.php | File | 3.21 KB | 0644 |
|
display_change_password.lib.php | File | 5.45 KB | 0644 |
|
display_create_table.lib.php | File | 1.53 KB | 0644 |
|
display_export.lib.php | File | 38.11 KB | 0644 |
|
display_git_revision.lib.php | File | 3.04 KB | 0644 |
|
display_import.lib.php | File | 24.34 KB | 0644 |
|
display_import_ajax.lib.php | File | 3.13 KB | 0644 |
|
display_select_lang.lib.php | File | 2.36 KB | 0644 |
|
error.inc.php | File | 1.21 KB | 0644 |
|
error_report.lib.php | File | 10.25 KB | 0644 |
|
export.lib.php | File | 35.16 KB | 0644 |
|
file_listing.lib.php | File | 2.37 KB | 0644 |
|
iconv_wrapper.lib.php | File | 3.88 KB | 0644 |
|
import.lib.php | File | 50.64 KB | 0644 |
|
index.lib.php | File | 1.37 KB | 0644 |
|
information_schema_relations.lib.php | File | 10.95 KB | 0644 |
|
insert_edit.lib.php | File | 112.79 KB | 0644 |
|
ip_allow_deny.lib.php | File | 9.35 KB | 0644 |
|
js_escape.lib.php | File | 4.43 KB | 0644 |
|
kanji-encoding.lib.php | File | 4.46 KB | 0644 |
|
language_stats.inc.php | File | 1.45 KB | 0644 |
|
logging.lib.php | File | 521 B | 0644 |
|
mime.lib.php | File | 704 B | 0644 |
|
mult_submits.inc.php | File | 10.64 KB | 0644 |
|
mult_submits.lib.php | File | 20.44 KB | 0644 |
|
mysql_charsets.inc.php | File | 4.09 KB | 0644 |
|
mysql_charsets.lib.php | File | 10.47 KB | 0644 |
|
mysql_relations.lib.php | File | 5.12 KB | 0644 |
|
normalization.lib.php | File | 33.98 KB | 0644 |
|
opendocument.lib.php | File | 7.94 KB | 0644 |
|
operations.lib.php | File | 73.64 KB | 0644 |
|
parse_analyze.lib.php | File | 2.12 KB | 0644 |
|
plugin_interface.lib.php | File | 19.69 KB | 0644 |
|
plugin_interface.lib.php.bak | File | 19.69 KB | 0644 |
|
pmd_common.php | File | 24.2 KB | 0644 |
|
relation.lib.php | File | 68.41 KB | 0644 |
|
relation_cleanup.lib.php | File | 13.84 KB | 0644 |
|
replication.inc.php | File | 8.82 KB | 0644 |
|
replication_gui.lib.php | File | 37.45 KB | 0644 |
|
sanitizing.lib.php | File | 6.3 KB | 0644 |
|
select_server.lib.php | File | 3.4 KB | 0644 |
|
server_common.inc.php | File | 1.22 KB | 0644 |
|
server_common.lib.php | File | 1.92 KB | 0644 |
|
server_privileges.lib.php | File | 179.22 KB | 0644 |
|
server_status.lib.php | File | 9.92 KB | 0644 |
|
server_status_advisor.lib.php | File | 1.89 KB | 0644 |
|
server_status_monitor.lib.php | File | 26.22 KB | 0644 |
|
server_status_processes.lib.php | File | 9.57 KB | 0644 |
|
server_status_queries.lib.php | File | 4.86 KB | 0644 |
|
server_status_variables.lib.php | File | 28.95 KB | 0644 |
|
server_user_groups.lib.php | File | 12.8 KB | 0644 |
|
server_users.lib.php | File | 1.35 KB | 0644 |
|
session.inc.php | File | 5.22 KB | 0644 |
|
session.lib.php | File | 735 B | 0644 |
|
special_schema_links.lib.php | File | 17.51 KB | 0644 |
|
sql.lib.php | File | 77.51 KB | 0644 |
|
sql.lib.php.bak | File | 77.51 KB | 0644 |
|
sql_query_form.lib.php | File | 15.71 KB | 0644 |
|
string.lib.php | File | 800 B | 0644 |
|
stringMb.lib.php | File | 1.86 KB | 0644 |
|
stringNative.lib.php | File | 6.82 KB | 0644 |
|
sysinfo.lib.php | File | 1.34 KB | 0644 |
|
tbl_columns_definition_form.inc.php | File | 13.55 KB | 0644 |
|
tbl_common.inc.php | File | 1.3 KB | 0644 |
|
tbl_info.inc.php | File | 3.54 KB | 0644 |
|
tbl_partition_definition.inc.php | File | 5.55 KB | 0644 |
|
tracking.lib.php | File | 54.93 KB | 0644 |
|
transformations.lib.php | File | 14.63 KB | 0644 |
|
url_generating.lib.php | File | 6.77 KB | 0644 |
|
user_preferences.inc.php | File | 2.38 KB | 0644 |
|
user_preferences.lib.php | File | 8.17 KB | 0644 |
|
util.lib.php | File | 749 B | 0644 |
|
vendor_config.php | File | 2.49 KB | 0644 |
|
zip_extension.lib.php | File | 5.38 KB | 0644 |
|