es gibt ja in Postgresql die Möglichkeit mit “EXPLAIN ANALYSE SELECT …”
sich auszugeben, wie lange es dauert, bis ein Befehl in der Datenbank braucht um abgearbeitet zu werden.
Dieses würde ich gerne mit PHP-Auswerten.
Ich versuche z.B.
$zeitabfrage=@pg_query("EXPLAIN ANALYSE SELECT bundesland from
bundesland WHERE ST_Contains(the_geom, $punktgeometrie_start) AND
ST_Contains(the_geom, $punktgeometrie_ende)");
$zeitabfrage_result=@pg_result($zeitabfrage,0,"QUERY PLAN");
echo "
";
echo "<b>Time 1: </b>".$zeitabfrage_result;
echo "
";
…leider ohne Erfolg. Kennt jemand eine Möglichkeit wie ich die Zeitdauer eines Befehls in PHP ausgeben kann?
Also die vielen @ werden regelmäßig deine Fehler verstecken, wenn welche auftreten. Das ist schlechter Programmierstil. Die Variablen einfach ungequotet in die Anfrage einzusetzen öffnet SQL-Injections Tür und Tor.
Dann gibt es da - ich glaube - gettimeofday() … oder war das in Perl? hmm zur Zeitmessung.
Zum Schluß würde mich noch interessieren, wo du die Funktion pg_result() gefunden hast … die kenne ich aus der offiziellen Dokumentation nicht.
Also die vielen @ werden regelmäßig deine Fehler verstecken, wenn welche auftreten. Das ist schlechter Programmierstil. Die Variablen einfach ungequotet in die Anfrage einzusetzen öffnet SQL-Injections Tür und Tor.
…stimme ich zu, das war auch nur hier auf die Schnelle…
Dann gibt es da - ich glaube - gettimeofday() … oder war das in Perl? hmm zur Zeitmessung.
Ja, im Prinzip gibt es für die Zeit eine ganze Menge Funktionen, aber leider nicht für das was ich suche: Date/Time Functions and Operators
Zum Schluß würde mich noch interessieren, wo du die Funktion pg_result() gefunden hast … die kenne ich aus der offiziellen Dokumentation nicht.
Stimmt, jetzt wo Du es sagst, in der offiziellen Doku steht da wirklich nichts (vielleicht ist das sogar eine Problemursache, ich muss das wohl irgendwo mal als Codeschnipsel in dem Skript gefunden haben).
warum machst du nicht einfach ein ganz normales Resultset auf dein
EXPLAIN ANALYSE
SELECT ...
(oder was auch immer) auf … diese anweisung liefert auch nur ein klassisches Ergebnis wie man es von einer DB-Abfrage erwarten würde
Das Ergebnis dieser Abfrage ist also eine Tabelle mit einer Spalte - da scrollst du schwups die wups zum letzten Datensatz resultset->last() {pseudocode}, in der einzigen aller möglichen spalten steht dann sowas:
Total runtime: 1422.389 ms
das kannst ja eigentlich genauso auch in irgendwelchen logs ausgeben .