XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
logger.php
1<?php
17
18
20{
24 public $queries = [];
25 public $blocks = [];
26 public $extra = [];
27 public $logstart = [];
28 public $logend = [];
30
36 public function __construct()
37 {
38 }
39
45 public static function &instance()
46 {
47 static $instance;
48 if (!isset($instance)) {
49 $instance = new XoopsLogger();
50 }
51 return $instance;
52 }
53
60 public function startTime($name = 'XOOPS')
61 {
62 $this->logstart[$name] = explode(' ', microtime());
63 }
64
70 public function stopTime($name = 'XOOPS')
71 {
72 $this->logend[$name] = explode(' ', microtime());
73 }
74
82 public function addQuery($sql, $error=null, $errno=null)
83 {
84 if (defined('XOOPS_LOGGER_ADDQUERY_DISABLED') && XOOPS_LOGGER_ADDQUERY_DISABLED) {
85 return;
86 }
87 $this->queries[] = ['sql' => $sql, 'error' => $error, 'errno' => $errno];
88 if ($error && defined('XOOPS_MYSQL_ERROR_LOG') && XOOPS_MYSQL_ERROR_LOG) {
89 error_log('XOOPS_MYSQL_ERROR_LOG: ' . print_r(end($this->queries), true));
90 }
91 }
92
100 public function addBlock($name, $cached = false, $cachetime = 0)
101 {
102 $this->blocks[] = ['name' => $name, 'cached' => $cached, 'cachetime' => $cachetime];
103 }
104
111 public function addExtra($name, $msg)
112 {
113 $this->extra[] = ['name' => $name, 'msg' => $msg];
114 }
115
121 public function dumpQueries()
122 {
123 $ret = '<table class="outer" width="100%" cellspacing="1"><tr><th>Queries</th></tr>';
124 $class = 'even';
125 foreach ($this->queries as $q) {
126 if (isset($q['error'])) {
127 $ret .= '<tr class="'.$class.'"><td><span style="color:#ff0000;">'.htmlentities($q['sql']).'<br><b>Error number:</b> '.$q['errno'].'<br><b>Error message:</b> '.$q['error'].'</span></td></tr>';
128 } else {
129 $ret .= '<tr class="'.$class.'"><td>'.htmlentities($q['sql']).'</td></tr>';
130 }
131 $class = ('odd' == $class) ? 'even' : 'odd';
132 }
133 $ret .= '<tr><td>Total: <span style="color:#ff0000;">'.count($this->queries).'</span> queries</td></tr></table><br>';
134 return $ret;
135 }
136
142 public function dumpBlocks()
143 {
144 $ret = '<table class="outer" width="100%" cellspacing="1"><tr><th colspan="2">Blocks</th></tr>';
145 $class = 'even';
146 foreach ($this->blocks as $b) {
147 if ($b['cached']) {
148 $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($b['name']).':</b> Cached (regenerates every ' . (int)$b['cachetime'] . ' seconds)</td></tr>';
149 } else {
150 $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($b['name']).':</b> No Cache</td></tr>';
151 }
152 $class = ('odd' == $class) ? 'even' : 'odd';
153 }
154 $ret .= '<tr><td>Total: <span style="color:#ff0000;">'.count($this->blocks).'</span> blocks</td></tr></table><br>';
155 return $ret;
156 }
157
164 public function dumpTime($name = 'XOOPS')
165 {
166 if (!isset($this->logstart[$name])) {
167 return 0;
168 }
169 if (!isset($this->logend[$name])) {
170 $stop_time = explode(' ', microtime());
171 } else {
172 $stop_time = $this->logend[$name];
173 }
174 return ((float)$stop_time[1] + (float)$stop_time[0]) - ((float)$this->logstart[$name][1] + (float)$this->logstart[$name][0]);
175 }
176
182 public function dumpExtra()
183 {
184 $ret = '<table class="outer" width="100%" cellspacing="1"><tr><th colspan="2">Extra</th></tr>';
185 $class = 'even';
186 foreach ($this->extra as $ex) {
187 $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($ex['name']).':</b> '.htmlspecialchars($ex['msg']).'</td></tr>';
188 $class = ('odd' == $class) ? 'even' : 'odd';
189 }
190 $ret .= '</table><br>';
191 return $ret;
192 }
193
199 public function dumpAll()
200 {
201 $ret = $this->dumpQueries();
202 $ret .= $this->dumpBlocks();
203 if (count($this->logstart) > 0) {
204 $ret .= '<table class="outer" width="100%" cellspacing="1"><tr><th>Execution Time</th></tr>';
205 $class = 'even';
206 foreach ($this->logstart as $k => $v) {
207 $ret .= '<tr><td class="'.$class.'"><b>'.htmlspecialchars($k).'</b> took <span style="color:#ff0000;">'.$this->dumpTime($k).'</span> seconds to load.</td></tr>';
208 $class = ('odd' == $class) ? 'even' : 'odd';
209 }
210 $ret .= '</table><br>';
211 }
212 $ret .= $this->dumpExtra();
213 return $ret;
214 }
215}
__construct()
Definition logger.php:36
stopTime($name='XOOPS')
Definition logger.php:70
static & instance()
Definition logger.php:45
addQuery($sql, $error=null, $errno=null)
Definition logger.php:82
dumpTime($name='XOOPS')
Definition logger.php:164
startTime($name='XOOPS')
Definition logger.php:60
addExtra($name, $msg)
Definition logger.php:111
addBlock($name, $cached=false, $cachetime=0)
Definition logger.php:100