aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php b/srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php
new file mode 100644
index 0000000..76430d4
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Controllers/Server/Status/QueriesController.php
@@ -0,0 +1,75 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Displays query statistics for the server
+ *
+ * @package PhpMyAdmin\Controllers
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Controllers\Server\Status;
+
+/**
+ * Class QueriesController
+ * @package PhpMyAdmin\Controllers\Server\Status
+ */
+class QueriesController extends AbstractController
+{
+ /**
+ * @return string HTML
+ */
+ public function index(): string
+ {
+ if ($this->data->dataLoaded) {
+ $hourFactor = 3600 / $this->data->status['Uptime'];
+ $usedQueries = $this->data->used_queries;
+ $totalQueries = array_sum($usedQueries);
+
+ $stats = [
+ 'total' => $totalQueries,
+ 'per_hour' => $totalQueries * $hourFactor,
+ 'per_minute' => $totalQueries * 60 / $this->data->status['Uptime'],
+ 'per_second' => $totalQueries / $this->data->status['Uptime'],
+ ];
+
+ // reverse sort by value to show most used statements first
+ arsort($usedQueries);
+
+ $chart = [];
+ $querySum = array_sum($usedQueries);
+ $otherSum = 0;
+ $queries = [];
+ foreach ($usedQueries as $key => $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.
+ $name = str_replace(['Com_', '_'], ['', ' '], $key);
+ // Group together values that make out less than 2% into "Other", but only
+ // if we have more than 6 fractions already
+ if ($value < $querySum * 0.02 && count($chart) > 6) {
+ $otherSum += $value;
+ } else {
+ $chart[$name] = $value;
+ }
+
+ $queries[$key] = [
+ 'name' => $name,
+ 'value' => $value,
+ 'per_hour' => $value * $hourFactor,
+ 'percentage' => $value * 100 / $totalQueries,
+ ];
+ }
+
+ if ($otherSum > 0) {
+ $chart[__('Other')] = $otherSum;
+ }
+ }
+
+ return $this->template->render('server/status/queries/index', [
+ 'is_data_loaded' => $this->data->dataLoaded,
+ 'stats' => $stats ?? null,
+ 'queries' => $queries ?? [],
+ 'chart' => $chart ?? [],
+ ]);
+ }
+}