2010-12-17 11 views
5

Chciałbym dodać kod do mojej funkcji Application.cfc onRequestEnd, która, jeśli włączona jest określona flaga zmiennej aplikacji, będzie rejestrować kwerendę sql i czas wykonania do tabeli bazy danych. Ta część jest względnie łatwa, ponieważ ColdFusion zwraca sql i czas wykonania jako część struktury zapytania.Jak uzyskać listę wszystkich zapytań uruchomionych na stronie w ColdFusion 9

Strona ma jednak prawdopodobnie blisko 1000 stron, a modyfikowanie wszystkich po prostu nie jest realistyczne. Chciałbym to zrobić całkowicie programowo w funkcji onRequestEnd. Aby to zrobić, muszę jakoś zdobyć listę wszystkich zapytań, które zostały wykonane na stronie i to tam jestem zakłopotany.

Jak mogę uzyskać listę nazw wszystkich zapytań, które zostały wykonane na bieżącej stronie? Zapytania te pojawiają się w zakresie zmiennych w szablonie, ale jest tam również mnóstwo innych zmiennych i nie jestem pewien, w jaki sposób można je łatwo przechwycić i określić, które zapytanie jest kwerendą.

Każda pomoc zostanie doceniona.

Odpowiedz

5

Ponieważ informacje te są dostępne za pośrednictwem szablonów debugowania, możesz przejrzeć te pliki dla niektórych wskaźników.

Kolejną rzeczą, którą należy wziąć pod uwagę, jest umieszczanie zapytań w tagach CFC lub niestandardowych oraz obsługa transakcji (ale podejrzewam, że zapytania są rozmieszczone w całej witrynie, więc może to być wiele stron do modyfikacji - chociaż co przemawia za tym, dlaczego zamykanie dostępu do danych jest dobrym pomysłem: łatwiej jest go utrzymać i ulepszyć dokładnie w takiej sytuacji).

Odpowiedni kod z szablonów debugowania (zmodernizowany trochę), to:

<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> 
+0

Dzięki za odpowiedź. Nie wiedziałem, że szablony debugowania są widoczne. Czy możesz mi powiedzieć, gdzie je znaleźć? – Nicholas

+0

+1 jako lekcja obiektowa do enkapsulacji. –

+0

Udało mi się spojrzeć na szablony debugowania i znalazłem tam odpowiedź. Niestety, podobnie jak większość profesjonalnych prac, ten przyszedł z gotową stroną internetową do pracy. Musiałem więc pracować z tym, co otrzymałem. Dla osób z podobnym problemem dołączę rozwiązanie do następnego komentarza. – Nicholas

Powiązane problemy