【发布时间】:2018-08-23 22:23:24
【问题描述】:
我需要显示一些关于调用“OnRequestStart”函数的次数的分析,或者更确切地说是 .cfc 文件中包含的内部 API 的每小时点击次数。最好通过生命周期法;但是计数器必须在生命周期之外继续。我知道这可以用其他语言轻松完成,但我是 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中调用它。这是您的 API 还是外部 API? -
可能会写入日志,但我还需要在某处显示命中数。内部 API
-
如果这是您的内部 API,为什么不从 API 本身记录它?
-
在 API 中,只需在您的 API 中使用
writeLog(text="<API_Name> Called. #application.reqCount# total calls.", type="information", file="apiLog");之类的东西(假设它是 CF API),并使用 Redtopia 的脚本也写入application范围。但这会在应用程序未重新启动时每次调用 API 时递增。您可能需要不同的时间划分或更持久的计数。 -
我要再次提醒,
application范围可能是最容易做到的,但如果应用程序在达到阈值之前结束,您将丢失之前的计数。根据您的标准,您可能想研究更具弹性的东西。
标签: coldfusion lifecycle application.cfc coldfusion-2016