在特定时间内清除表格且仅一次(每天)

时间:2012-07-30 11:53:57

标签: c# asp.net cron

我正在尝试实现以下目标:我正在使用MySQL和ASP.NET。我正在桌子上创建一个计数器。我希望每天将计数器列重置为零。有没有选择来实现这个目标以及如何实现。

我不想在Windows中使用管理任务,也不想创建.exe文件。我希望能够在代码中用C#做到这一点。

我在解决这个问题时的想法是创建一个将设置为false的Application变量。在应用程序页面中,我将查询DateTime.Now并获取当前小时。如果小时为12:00并且Application变量为false,则运行函数,否则不执行任何操作。如果时间是13:00且Application变量等于false,则将其设置为true。

我在一小时的时间内做到这一点只是为了确保它能够运行。访问我的页面的每个用户都将触发if语句。但是,该功能每天只运行一次。

这是一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

在阅读您的意见后,我同意我应该更加努力地寻求更有效的解决方案。

我决定将Microsoft Task Scheduler与VBS脚本一起使用,如下所示:

1)创建一个加载特定页面的vbs脚本,甚至将结果保存到特定文件中,如下所示:

sSrcUrl = "http://www.this-page-intentionally-left-blank.org/"
sDestFolder = "C:\"
sImageFile = "filename.txt"
set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET", sSrcUrl, False
oHTTP.send ""
set oStream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeBinary
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite
set oStream = nothing
set oHTTP = nothing
WScript.Echo "Done..." 

2)创建任务以在特定时段每天运行此脚本文件(cron.vbs)。

我应该在Windows Server 2008上运行它。我已经在Windows 7上对它进行了本地测试,但效果很好。

我没有看到任何缺点,除非我遗漏了什么。

来源:Recommended method for loading a URL via a scheduled task on Windows

答案 1 :(得分:0)

如果您希望计数器在12:00之前重置,但是在13:15之前没有人访问您的网站,您实际上并不关心该重置是在稍后的时间发生的:在此期间没有任何事情可以计算。

你可以做的是不记得布尔值('做了重置'),而是记住日期('重置'')。 如果当前时间是在12:00之后,请根据当前日期检查存储的数据。如果它们不匹配,请重置计数器并更新存储的日期。