Как получить список всех запросов, запущенных на странице в ColdFusion 9 - PullRequest
5 голосов
/ 17 декабря 2010

Я хотел бы добавить в мою функцию Application.cfc onRequestEnd некоторый код, который, если включен флаг определенной прикладной переменной, будет регистрировать запрос sql и время выполнения в таблице базы данных. Эта часть относительно проста, поскольку ColdFusion возвращает sql и время выполнения как часть структуры запроса.

Тем не менее, этот сайт, вероятно, имеет около 1000 страниц, и изменить их все просто нереально. Поэтому я хотел бы сделать это полностью программно в функции onRequestEnd. Для этого мне нужно как-то получить список всех запросов, которые были выполнены на странице, и вот где я в тупике.

Как я могу получить список имен всех запросов, выполненных на текущей странице? Эти запросы появляются в области видимости переменных шаблона, но там также есть множество других переменных, и я не уверен, как легко пройти через это и определить, что является запросом.

Любая помощь будет оценена.

1 Ответ

5 голосов
/ 17 декабря 2010

Поскольку эта информация доступна с помощью шаблонов отладки, вы можете взглянуть на эти файлы для некоторых указателей.

Еще одна вещь, которую следует учитывать, - это инкапсуляция ваших запросов в CFC или пользовательский тег и работа с ними.журналирование (но я подозреваю, что ваши запросы распределены по всему сайту, так что может быть много страниц для изменения - хотя это говорит о том, почему инкапсуляция доступа к данным является хорошей идеей: проще поддерживать и улучшать именно этот видситуация).

Соответствующий код из шаблонов отладки (немного модернизированный):

<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>
...