Frage

würde Ich mag einige Code meine Application.cfc onRequestEnd Funktion hinzuzufügen, die, wenn eine bestimmte Anwendung variable Flag aktiviert ist, wird SQL-Abfrage und die Ausführungszeit zu einer Datenbanktabelle anmelden. Dieser Teil ist relativ einfach, da Coldfusion die SQL- und die Ausführungszeit als Teil der Abfrage-Struktur zurückgibt.

Allerdings hat diese Website wahrscheinlich in der Nähe zu 1000 Seiten, und nur alle von ihnen zu modifizieren, ist nicht realistisch. So würde Ich mag diese in der onRequestEnd Funktion vollständig programmatisch zu tun. Um das zu tun, muß ich irgendwie eine Liste aller Anfragen erhalten, die auf der Seite ausgeführt und das ist, wo ich ratlos bin.

Wie kann ich eine Liste mit den Namen aller Anfragen erhalten, die auf der aktuellen Seite ausgeführt hat? Diese Abfragen werden in der Variablen Umfang der Vorlage, aber es gibt eine Vielzahl von anderen Variablen in dort auch, und ich bin nicht sicher, wie man leicht Schleife durch die und bestimmen, welche eine Abfrage.

Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

Da die Informationen über die Debug-Vorlagen zur Verfügung stehen, könnten Sie an diesen Dateien für einige Hinweise einen Blick darauf werfen.

Eine andere Sache zu prüfen, ist Ihre Fragen in einem CFC oder benutzerdefinierten Tag Einkapselung und die sich mit der Protokollierung mit (aber ich vermute, dass Ihre Anfragen auf der ganzen Website verteilt werden, so dass möglicherweise viele Seiten zu ändern - obwohl das spricht, warum Zugangsdaten Einkapselung ist eine gute Idee. es ist einfacher für genau diese Art von Situation zu erhalten und zu verbessern)

Der entsprechende Code aus den Debug-Vorlagen (ein wenig modernisiert), ist:

<cfset tempFactory = createObject("java", "coldfusion.server.ServiceFactory") />
<cfset tempCfdebugger = tempFactory.getDebuggingService() />
<cfset qEvents = tempCfdebugger.getDebugger().getData() />

<cfquery dbType="query" name="qdeb">
    SELECT *, (endTime - startTime) AS executionTime
    FROM qEvents WHERE type = 'SqlQuery'
</cfquery>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top