coldfusion - 如何获取 ColdFusion 9 中某一页面上运行的所有查询的列表

标签 coldfusion cfc coldfusion-9 cfquery application.cfc

我想向我的 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>

关于coldfusion - 如何获取 ColdFusion 9 中某一页面上运行的所有查询的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474255/

相关文章:

php代码解密coldfusion加密字符串

coldfusion - 如何使用 cfscript 从另一个 cfm 页面调用 cfc 中的 cffunction?

eclipse - 适用于 Eclipse 的 ColdFusion 9 行调试器

coldfusion - cfc 中的函数局部变量

java - 为什么 SocialAuth 说 "facebook is not a provider or valid OpenId URL"?

mysql - 分页 - 如果满足特定条件如何跳过记录

sql-server-2008 - Coldfusion CFSTOREDPROC 不返回表

coldfusion - 文件是否存在且不可读?

coldfusion - 在 REQUEST 范围内存储 Coldfusion CFC 实例,安全吗?