假设我在page.cfm上有以下脚本.每当有人来到page.cfm时,都会向我发送一封电子邮件.因此,如果1000人来到page.cfm,我会收到1000封电子邮件.
<cfmail to="joe@smith.com"
from="error@smith.com"
subject="Error"
type="text">
A person visited.
</cfmail>
Run Code Online (Sandbox Code Playgroud)
我想限制它,所以我只在前一天有5个人访问时收到电子邮件.
因此,如果2人今天访问,我会收到2封电子邮件.如果5人访问我得到5,但如果有100人访问,我仍然只收到5封电子邮件.然后第二天循环继续(如果2人只访问2封电子邮件,但如果有100人只访问5封电子邮件)
我怎么能只用ColdFusion呢?(没有cfschedule)
我能想到的最简单的方法是在一对Application变量中放置一个计数器和一个日期戳.
然后,对于每个请求,请检查您录制的日期.如果不是今天,请将计数器变量重置为1并将日期重新设置为今天.
然后,在您放置cfmail标记的位置,检查计数器是否已达到限制.如果没有,请发送邮件.无论哪种方式,增加计数器.
在Application.cfc onApplicationStart()中:
<cfset application.alertDate = now()>
<cfset application.alertCount = 1>
Run Code Online (Sandbox Code Playgroud)
(以上主要是为了确保以后使用时存在变量)
在Application.cfc onRequestStart()中:
<cfif dateCompare(application.alertDate,now(),"d") EQ -1)>
<cfset application.alertCount = 1>
<cfset application.alertDate = now()>
</cfif>
Run Code Online (Sandbox Code Playgroud)
在page.cfm中:
<cfset application.alertCount++>
<cfif application.alertCount LTE 5>
<cfmail ... >
</cfif>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |