( jc – 17.01.2011 16:07)
Anzahl der SQL queries pro Seitenaufruf mitloggen..
Gelegentlich kann es hilfreich sein die Anzahl der queries, die ein Seitenaufruf erzeugt, zu kennen.. sei es zur Kontrolle beim Entwickeln, oder weil man Probleme mit der Performance einer Seite hat. Der Aufwand dafür ist erstaunlich minimal und erfordert lediglich 2 Zeilen Code in der class.rex_sql.in.php
, sowie eine in der index.php
(je nachdem wo man mitschneiden will jene vom frontend und/oder auch backend).
Patch:
./redaxo/include/classes/class.rex_sql.inc.php
:
// Original (Zeile 25 ff.):
var $errno; // Fehlernummer
/*private*/ function rex_sql($DBID = 1)
{
global $REX;
$this->debugsql = false;
$this->selectDB($DBID);
// Änderungen:
var $errno; // Fehlernummer
static $count = 0; /* QUERIES COUNTER PATCH*/
/*private*/ function rex_sql($DBID = 1)
{
global $REX;
self::$count++; /* QUERIES COUNTER PATCH*/
$this->debugsql = false;
$this->selectDB($DBID);
./index.php
und/oder ./redaxo/index.php
:
// ORIGINAL (Zeile 66 ff.):
}
// ----- caching end für output filter
$CONTENT = ob_get_contents();
ob_end_clean();
// PATCH:
}
var_dump(rex_sql::$count); /* QUERIES COUNTER PATCH*/
// ----- caching end für output filter
$CONTENT = ob_get_contents();
ob_end_clean();
Kontrolliertere Ausgabe:
Will man die Zahl nicht einfach zusammenhangslos am Anfang des Seiten-HTML ausgehustet bekommen, kann man die Ausgabe per Ersetzung natürlich auch gezielt an geeigneter Stelle (z.b. im Footer) unterbringen, und z.b. auch – wie in folgendem Beispiel – nur wenn man als Admin eingeloggt ist:
// Ersetzung von Platzhalter ###SQL_QUERIES### im Output durch den Zähler..
}
// ----- caching end für output filter
$CONTENT = ob_get_contents();
if (isset($REX['INSTNAME']) && isset($_SESSION[$REX['INSTNAME']]['UID']) && ($_SESSION[$REX['INSTNAME']]['UID']) == 1)
{
$CONTENT = str_replace('###SQL_QUERIES###',var_export(rex_sql::$count,true),$CONTENT);
}
ob_end_clean();
ps.: thx @ robert für Beihilfe & Geduld.. ;->