Zeit eines MySQL-Query messen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beziehen
code
fehl
fehler
fehlerhafte abfrage
funktion
grund
letzte abfrage
mache
meinung
messen
not
probieren
problem
reagieren
speichern
studieren
tabelle
vorherigen zustand
zeit
-
Moin moin,
ich würde gerne die Zeit messen, die ein Query braucht, um ausgeführt zu werden.
Im Grunde ist das ja ganz einfach durch ein
<?php $starttime = microtime(); mysql_query("BLABLA"); $gesamttime = microtime() - $starttime; ?>
Da ich viele Querys mache, die ich alle überwachen will, hätte ich dafür gerne eine Funktion wie diese;
<?php function observe_query_time($query_string) { $starttime = microtime(); $qry = mysql_query("BLABLA"); $gesamttime = microtime() - $starttime; return $qry; } ?>
Allerdings habe ich hierbei das Problem, dass ich jetzt nichtmehr auf mySQL- Fehler reagieren kann.
denn auf jede fehlerhafte Abfrage reagiere ich anders.
oder kann ich ein
<?php observe_query_time($query_string) or die("BLABLAH"); ?>
machen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Okay,
ich war der Meinung, dass das "or ..." immer direkt hinter das mysql_query muss.
War dumm von mir, sorry
EDIT =>
Ein Problem habe ich dochnoch:
Ich will die Zeiten auch in einer MySQL-Tabelle speichern, aber dazu muss ich einen weiteren Query machen.
Schlägt dieser Query fehl, werden aber die Variablen mysql_errno und mysql_error überschrieben...
Wie löse ich das denn?
Beitrag zuletzt geändert: 8.2.2011 17:39:11 von speedtouch92 -
speedtouch92 schrieb:
Schlägt dieser Query fehl, werden aber die Variablen mysql_errno und mysql_error überschrieben...
Wie löse ich das denn?
Hiho.
Nicht ganz. Die beziehen sich immer auf die letzte Abfrage und werden daher auch überschrieben, wenn kein Fehler auftrat. Zur Not könntest du die vorherigen Zustand zwischen speichern. Mir erschließt sich aber noch nicht so ganz wofür du das ganze brauchst? -
Probiers so:
<?php function query($query_string, $errmsg="Fehler", $debug=false) { $starttime = microtime(); try { if(mysql_query($query_string) === false) if($debug == true) throw new Exception(mysql_error()); else throw new Exception($errmsg); } catch (Exception $e) { return $e->getMessage(); } return microtime() - $starttime; } echo query("xxx", "Fehler 1"); echo query("yyy", "Fehler 2"); ?>
Beitrag zuletzt geändert: 8.2.2011 18:17:22 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage