2

我正在尝试实现以下目标:我正在使用 MySQL 和 ASP.NET。我正在表格中创建一个计数器。我希望每天将计数器列重置为零。是否有任何选择可以实现这一目标以及如何实现。

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

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

我在一个小时的差异中这样做只是为了确保它运行。每个访问我的页面的用户都会触发 if 语句。但是,该功能每天只运行一次。

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

4

2 回答 2

0

阅读您的评论后,我同意我应该为更有效的解决方案付出更多努力。

我决定将 Microsoft 任务计划程序与 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 上进行了本地测试,效果很好。

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

来源:在 Windows 上通过计划任务加载 URL 的推荐方法

于 2012-07-30T13:49:32.943 回答
0

如果您希望计数器在 12:00 之前重置,但在 13:15 之前没有人访问您的站点,那么您并不真正关心该重置是否发生在稍后的时间:在此期间没有什么可计算的。

您可以做的不是记住一个布尔值(“重置”),而是一个日期(“重置完成”)。如果当前时间在 12:00 之后,请对照当前日期检查存储的数据。如果它们不匹配,请重置计数器并更新存储的日期。

于 2012-07-30T13:59:29.093 回答