*edit*
fertiger Mod: siehe weiter unten auf dieser Seite!
*/edit*
falls es dafür schon einen Mod gibt:
wo finde ich den?
Ansonsten wäre ich dankbar für einen Tipp:
Es gibt ja den page_generation_mod. Abgeleitet von diesem möchte ich nun eine Liste der DB-Abfragen einer Seite, welche die $sql enthält und daneben oder darunter die benötigte Zeit für diese Abfrage.
Meine Idee dazu:
Am Anfang jeder DB-Abfrage kommt dieser Code:
Code: Alles auswählen
$zmtime = microtime();
$zmtime = explode(" ",$zmtime);
$zmstart = $zmtime[1] + $zmtime[0];
Code: Alles auswählen
$zmtime = microtime();
$zmtime = explode(" ",$zmtime);
$zmende = $zmtime[1] + $zmtime[0];
$zmtotal = round(($zmende - $zmstart), 5);
Mein Problem:
in der mysql.php gibt es verschiedene Funktionen, doch meist wird ja immer diese hier ausgeführt:
Code: Alles auswählen
function sql_query($query = "", $transaction = FALSE)
{
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
// Remove any pre-existing queries
unset($this->query_result);
if($query != "")
{
$this->num_queries++;
$this->query_result = @mysql_query($query, $this->db_connect_id);
}
if($this->query_result)
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$this->sql_time += $endtime - $starttime;
return $this->query_result;
}
else
{
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$this->sql_time += $endtime - $starttime;
return ( $transaction == END_TRANSACTION ) ? true : false;
}
}
Da ich ja nur die Abfragen stoppen will bzw. aufgelistet haben will, genügt es, nur diese Funktion zu "messen"? oder gibt es Ausnahmen, die eine der anderen Funktionen benutzen?
Und wenn ich die ganzen Daten in einen Array packen will, dann muss ich diesen array wo genau mit $global verfügbar machen? in der DB-Funktion oder woanders?
Der Zweck ist, daß man rausfindet, welche Abfrage genau lahmt - wenn eine Seite langsam lädt. Dieses Feature werde ich dann noch mit einem Switch bestücken, wo man das Teil an- und ausschalten kann.
P.S.: das "__LINE__" und "__FILE__" ist ja auch immer verfügbar, oder?
*edit*
das "line" und file" werde ich wohl nicht in der mysql-funktion auslesen können, weil ja dann wohl die Datei und die zeile von der mysql-php aufscheinen, oder?
*nochmaledit*
bis auf die Anzeige, wo die sql-Anfrage gestartet wurde, habe ich es geschafft!
Ideen hierzu noch gesucht...
*letzesEdit*
falls Interesse besteht, schreibe ich eine kleine Anleitung.
Mit dem Code wird die Summe der Zeit aller SQL-Abfragen gezeigt sowie die SQL-Anzahl.
Es wird darunter in einer Tabelle pro SQL-Abfrage die Abfrage und die benötige Zeit für die jeweilige Abfrage gezeigt - so sieht man gleich, wenn eine Anfrage die ganze Seite lahmt.