使用 ColdFusion 计算生命周期方法中的命中数

Counting the number of hits in a life cycle method using ColdFusion

我需要显示一些关于 "OnRequestStart" 函数被调用次数的分析,或者更确切地说,我们内部 API 每小时的点击次数,它包含在 .cfc 文件中。最好通过生命周期方法;但是计数器必须在生命周期之外继续。我知道这可以用其他语言轻松完成,但我是 ColdFusion 的新手,并且一直在尝试通读文档以查看是否有某种形式的生命周期方法可以用于实现此目的。如果我缺少任何类型的文档(我已经尝试在一周内学习 cf、cfdocs、adobe 文档),但实际上并没有太多。这可能不是 100% 清楚,但如果需要任何说明,我会很乐意提供帮助。

编辑:我认为最好在 onApplicationStart 中设置一个应用程序变量,并在 onRequest 开始时将 1 递增到计数器变量。这是我的示例代码:

Application.cfc:

<CFFUNCTION NAME="OnApplicationStart" ACCESS="PUBLIC" RETURNTYPE="BOOLEAN">
   <cfset Application.timer EQ 0/>
   <cfset Application.counter EQ 0/>
</CFFUNCTION>

somepage.cfm

<tr> 
    <cfoutput> #Application.counter#</cfoutput>
</tr>

我认为这会奏效,但我收到一条错误消息 Element COUNTER is undefined in APPLICATION. 是不是我遗漏了什么?我尝试重新启动 CF 服务器服务和 Web 服务器,但没有成功。

谢谢大家的帮助

写入应用范围,在onRequestStart()中,包含如下代码:

lock scope="application" type="exclusive" timeout=1 throwontimeout=false {
    if (!application.keyExists("reqCount") {
        application.reqCount= 0;
    }
    application.reqCount++;
}

然后你可以在任何需要的地方使用它。

事实证明,执行此操作的最简单方法是在生命周期之外或在 onApplicationStart 内简单地创建一个变量,然后在每次 onRequestStart 时递增该变量。之后您可以做任何需要做的事情。我愚蠢地做过一件事,就是在 <cfreturn> 标签后面加上 <cfset Application.timer EQ 0/> <cfset Application.counter EQ 0/>。吸取教训,不要假设任何事情,研究一切哈哈。

谢谢大家