2

私は次のことを達成しようとしています:MySQLとASP.NETを使用しています。テーブルにカウンターを作成しています。そのカウンター列を毎日ゼロにリセットしたいと思います。これを達成するためのオプションと方法はありますか?

Windowsで管理タスクを使用したくないし、.exeファイルを作成したくない。私はそれをC#、コードで実行できることを好みます。

これを解決するために私が考えたのは、falseに設定されるアプリケーション変数を作成することです。アプリケーションページで、DateTime.Nowをクエリし、現在の時間を取得します。時間が12:00で、Application変数がfalseの場合は、関数を実行します。それ以外の場合は、何もしません。時刻が13:00で、アプリケーション変数がfalseに等しい場合は、trueに設定します。

私はそれが実行されることを確認するためだけに時間差でそれを行います。私のページにアクセスしたすべてのユーザーは、そのifステートメントをトリガーします。ただし、この関数は1日に1回だけ実行されます。

それは良い解決策ですか?

4

2 に答える 2

0

あなたのコメントを読んだ後、私はより効率的な解決策に向けてもっと努力すべきであることに同意します。

次のように、VBSスクリプトでMicrosoftタスクスケジューラを使用することにしました。

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)を毎日特定の時間に実行するタスクを作成します。

これはWindowsServer2008で実行する必要があります。Windows7でローカルにテストしましたが、うまく機能します。

何かが足りない場合を除いて、不利な点は見当たりません。

ソース:Windowsでスケジュールされたタスクを介してURLをロードするための推奨される方法

于 2012-07-30T13:49:32.943 に答える
0

カウンターを12:00までにリセットしたいが、13:15まで誰もサイトにアクセスしない場合は、そのリセットが後で発生することを気にする必要はありません。その間、カウントするものはありませんでした。

できることは、ブール値(「リセットしました」)ではなく、日付(「リセットしました」)を覚えていることです。現在時刻が12:00以降の場合は、保存されているデータを現在の日付と照合してください。一致しない場合は、カウンターをリセットし、保存された日付を更新してください。

于 2012-07-30T13:59:29.093 に答える