Skip to content

Commit eeb5bc8

Browse files
committed
Show server response time on server details page
1 parent 3167cf9 commit eeb5bc8

File tree

4 files changed

+43
-8
lines changed

4 files changed

+43
-8
lines changed

src/controllers/Server/View.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ public function run(Router &$router) {
5050
}
5151

5252
if ($model->server) {
53-
$model->server_uptime = ServerMetric::getUptime($this->server_id);
53+
$model->server_uptime = ServerMetric::getUptime(
54+
$this->server_id
55+
);
56+
$model->server_response_time = ServerMetric::getLatestResponseTime(
57+
$this->server_id
58+
);
5459
}
5560

5661
ob_start();

src/libraries/ServerMetric.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,35 @@ class ServerMetric {
1515

1616
const CACHE_UPTIME_TTL = 300;
1717

18+
public static function &getLatestResponseTime($server_id) {
19+
$cache_key = "bnetdocs-servermetric-lastms-" . (int) $server_id;
20+
$cache_val = Common::$cache->get($cache_key);
21+
if ($cache_val !== false) return $cache_val;
22+
if (!isset(Common::$database)) {
23+
Common::$database = DatabaseDriver::getDatabaseObject();
24+
}
25+
$stmt = Common::$database->prepare("
26+
SELECT `response_time`
27+
FROM `server_metrics`
28+
WHERE `server_id` = :server_id
29+
ORDER BY `metric_datetime` DESC LIMIT 1;
30+
");
31+
$stmt->bindParam(":server_id", $server_id, PDO::PARAM_INT);
32+
$stmt->execute();
33+
$obj = $stmt->fetch(PDO::FETCH_OBJ);
34+
$stmt->closeCursor();
35+
Common::$cache->set(
36+
$cache_key,
37+
$obj->response_time,
38+
self::CACHE_UPTIME_TTL
39+
);
40+
return $obj->response_time;
41+
}
42+
1843
public static function &getUptime($server_id) {
1944
$cache_key = "bnetdocs-servermetric-uptime-" . (int) $server_id;
2045
$cache_val = Common::$cache->get($cache_key);
21-
//if ($cache_val !== false) return unserialize($cache_val);
46+
if ($cache_val !== false) return unserialize($cache_val);
2247
if (!isset(Common::$database)) {
2348
Common::$database = DatabaseDriver::getDatabaseObject();
2449
}

src/models/Server/View.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@ class View extends Model {
88

99
public $server;
1010
public $server_id;
11+
public $server_response_time;
1112
public $server_type;
1213
public $server_uptime;
1314
public $user_session;
1415

1516
public function __construct() {
1617
parent::__construct();
17-
$this->server = null;
18-
$this->server_id = null;
19-
$this->server_type = null;
20-
$this->server_uptime = null;
21-
$this->user_session = null;
18+
$this->server = null;
19+
$this->server_id = null;
20+
$this->server_response_time = null;
21+
$this->server_type = null;
22+
$this->server_uptime = null;
23+
$this->user_session = null;
2224
}
2325

2426
}

src/templates/Server/View.phtml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ $object_uptime = Common::intervalToString(
2020
"0 seconds"
2121
);
2222

23+
$object_response_time = $this->getContext()->server_response_time * 1000;
24+
$object_response_time = sprintf("%.02fms", $object_response_time);
25+
2326
$title = ($object ? $object->getName() : "Server Not Found");
2427
$description = ($object ? "The BNETDocs Status Page for " . $object->getName()
2528
: "The requested server does not exist or could not be found.");
@@ -61,7 +64,7 @@ require("./header.inc.phtml");
6164
<tr><th>Address</th><td class="address" onclick="bnetdocs.fSelectText(this);"><?php echo filter_var($object->getAddress() . ":" . $object->getPort(), FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?></td></tr>
6265
<tr><th>Owner</th><td><?php if ($object_user) { ?><a href="<?php echo $object_user_url; ?>"><img class="avatar" src="<?php echo $object_user_avatar; ?>"/> <?php echo filter_var($object_user->getName(), FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?></a><?php } else { echo "Anonymous"; } ?></td></tr>
6366
<tr><th>Type</th><td><?php echo filter_var($object_type->getLabel(), FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?></td></tr>
64-
<tr><th>Current Status:</th><td><?php echo $object_status; ?></td></tr>
67+
<tr><th>Current Status:</th><td><?php echo $object_status; ?> (<?php echo $object_response_time; ?>)</td></tr>
6568
<tr><th>Uptime:</th><td><?php echo $object_uptime; ?></td></tr>
6669
</tbody></table>
6770
</section>

0 commit comments

Comments
 (0)