【问题标题】:Clear table in a specific time and only once (every day)在特定时间清表一次(每天)
【发布时间】:2012-07-28 02:13:50
【问题描述】:

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

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

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

我会在一小时内执行此操作,以确保它运行。每个访问我的页面的用户都会触发 if 语句。但是,该函数每天只运行一次。

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

【问题讨论】:

  • 如果在那个小时内没有人访问您的应用程序,您会怎么做? ASP.net 不是为这类事情设计的,这就是计划任务/服务的用途。
  • Sם 我会进行 11 小时差异检查
  • 为了创建调度程序,不需要exe甚至windows服务。您甚至可以安排您的 .aspx 页面本身。为什么你不能去调度程序?
  • 正如 paddy 所说,asp.net 不是为此而设计的......问题是你永远不能确定你的应用程序不会在 12 到 13 之间被回收多次,即。您绝对无法控制生命周期
  • 任何可靠的在线 cron 服务。有很多,大多数看起来很业余

标签: c# asp.net cron


【解决方案1】:

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

我决定将 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 上进行了本地测试,效果很好。

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

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

【讨论】:

  • 我认为你错过了cmets的要点,不是使用任务调度程序打开页面所以它可以运行命令,使用任务调度程序运行你想要的查询。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多