| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\DBStats; |
|
|
| use Exception; |
| use Piwik\Config; |
| use Piwik\Db; |
|
|
| |
| |
| |
| class MySQLMetadataDataAccess |
| { |
| public function getDBStatus() |
| { |
| if ( |
| function_exists('mysql_connect') |
| && function_exists('mysql_stat') |
| && function_exists('mysql_close') |
| ) { |
| $configDb = Config::getInstance()->database; |
| $link = mysql_connect($configDb['host'], $configDb['username'], $configDb['password']); |
| $status = mysql_stat($link); |
| mysql_close($link); |
| $status = explode(" ", $status); |
| } else { |
| $fullStatus = Db::fetchAssoc('SHOW STATUS'); |
| if (empty($fullStatus)) { |
| throw new Exception('Error, SHOW STATUS failed'); |
| } |
|
|
| $status = array( |
| 'Uptime' => $fullStatus['Uptime']['Value'], |
| 'Threads' => $fullStatus['Threads_running']['Value'], |
| 'Questions' => $fullStatus['Questions']['Value'], |
| 'Slow queries' => $fullStatus['Slow_queries']['Value'], |
| 'Flush tables' => $fullStatus['Flush_commands']['Value'], |
| 'Open tables' => $fullStatus['Open_tables']['Value'], |
| 'Opens' => 'unavailable', |
| 'Queries per second avg' => 'unavailable', |
| ); |
| } |
|
|
| return $status; |
| } |
|
|
| public function getTableStatus($tableName) |
| { |
| return Db::fetchRow("SHOW TABLE STATUS LIKE ?", array($tableName)); |
| } |
|
|
| public function getAllTablesStatus() |
| { |
| return Db::fetchAll("SHOW TABLE STATUS"); |
| } |
|
|
| public function getRowCountsByArchiveName($tableName, $extraCols) |
| { |
| |
| $sql = "SELECT name as 'label', COUNT(*) as 'row_count'$extraCols FROM `$tableName` GROUP BY name"; |
| return Db::fetchAll($sql); |
| } |
|
|
| public function getColumnsFromTable($tableName) |
| { |
| return Db::fetchAll("SHOW COLUMNS FROM " . $tableName); |
| } |
| } |
|
|