Nic*_*las 5 coldfusion cfc cfquery application.cfc coldfusion-9
我想在Application.cfc onRequestEnd函数中添加一些代码,如果某个应用程序变量标志打开,则会将查询sql和执行时间记录到数据库表中.这部分相对容易,因为ColdFusion将sql和执行时间作为查询结构的一部分返回.
但是,这个网站可能接近1000页,修改所有这些页面是不现实的.所以我想在onRequestEnd函数中以编程方式完成这项工作.为了做到这一点,我需要以某种方式获取在页面上执行的所有查询的列表,这就是我难倒的地方.
如何获取当前页面上已执行的所有查询的名称列表?这些查询出现在模板的变量范围中,但是其中还有无数的其他变量,我不确定如何轻松地循环并确定哪个是查询.
任何帮助,将不胜感激.
由于该信息可通过调试模板获得,因此您可以查看这些文件以获取一些指示.
另一件需要考虑的事情是将您的查询封装在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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |