-
Notifications
You must be signed in to change notification settings - Fork 3
/
servertiming.php
69 lines (54 loc) · 1.34 KB
/
servertiming.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
/**
* @package GZip.HTML
* @subpackage Server.Timing
* @copyright Copyright (C) 2018 Thierry Bela
*
* dual licensed
*
* @license LGPL v3
* @license MIT License
*/
defined('_JEXEC') or die;
class PlgSystemServerTiming extends JPlugin {
public function onAfterRender() {
if (!$this->params->get('servertiming')) {
return;
}
$data = $this->getTimingData();
$header = [];
foreach ($data['marks'] as $k => $mark) {
$header[] = substr('00'.($k + 1), -3).'-'.preg_replace('#[^A-Za-z0-9]#', '', $mark->tip).';dur='.$mark->time; //.';memory='.$mark->memory;
}
$header[] = 'total;dur='.$data['totalTime']; //.';memory='.$data['totalMemory'];
header('Server-Timing: '.implode(',', $header));
}
/**
* Display profile information.
*
* @return string
*
* @since 2.5
*/
protected function getTimingData()
{
$totalTime = 0;
// $totalMem = 0;
$marks = array();
foreach (JProfiler::getInstance('Application')->getMarks() as $mark)
{
$totalTime += $mark->time;
// $totalMem += (float) $mark->memory;
$marks[] = (object) array(
'time' => $mark->time,
// 'memory' => $mark->memory,
'tip' => $mark->label
);
}
return [
'totalTime' => $totalTime,
//'totalMemory' => $totalMem,
'marks' => $marks
];
}
}