2012-07-30 55 views
2

我試圖實現以下目的:我正在使用MySQL和ASP.NET。我正在桌子上創建一個計數器。我希望每天都將計數器列重置爲零。有沒有什麼選擇可以實現這個目標和方法。在特定時間清除表格並且只有一次(每天)

我不想在Windows中使用管理任務,也不想創建.exe文件。我更喜歡用C#,代碼來做到這一點。

我認爲解決這個問題的方法是創建一個應用變量,將其設置爲false。在應用程序頁面中,我將查詢DateTime.Now並獲取當前小時。如果小時爲12:00,並且Application變量爲false,則運行一個函數,否則,不執行任何操作。如果時間是13:00,並且Application變量等於false,則將其設置爲true。

我這樣做只是爲了確保它在一小時內運行。每個訪問我的頁面的用戶都會觸發if語句。但是,該功能每天只能運行一次。

這是一個很好的解決方案嗎?

+6

如果沒有人在那個小時內訪問您的應用程序,您會做什麼? ASP.net不是爲這種事情設計的,這是計劃任務/服務的目的。 – Paddy 2012-07-30 11:55:47

+0

S I我會讓它11小時差異檢查 – 2012-07-30 11:58:33

+0

爲了創建一個調度程序,不需要exe或甚至windows服務。你甚至可以安排你的.aspx頁面本身。爲什麼不能去一個調度程序? – shajivk 2012-07-30 12:01:41

回答

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本地測試了它,它工作得很好。

我沒有看到任何缺點,除非我失去了一些東西。

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

+0

我覺得你錯過了評論的要點,它不是使用任務調度器來打開頁面,因此它可以運行命令,使用任務調度器來運行你想要的查詢本身。 – 2012-07-30 14:03:02

0

如果你想在櫃檯12:00重置,但沒有人訪問你的網站,直到13:15,你真的不關心該復位發生在稍後時間:有在此期間沒有什麼值得一提的。

你可以做的是不記得布爾值('做了重置'),而是一個日期('重置完成')。 如果當前時間在12:00之後,請根據當前日期檢查存儲的數據。如果它們不匹配,請重置計數器並更新存儲的日期。

相關問題