.net で構築された自分の Web サイトで、リンクが 1 日に 1 回 (そして 1 回だけ) ヒットされるようにしたいのですが、共有サーバー上にいるため、実行可能ファイルを実行できず、24 時間オンになっている PC にアクセスできません。スケジュールされたタスクを作成します。
私のオプションは何ですか?
.net で構築された自分の Web サイトで、リンクが 1 日に 1 回 (そして 1 回だけ) ヒットされるようにしたいのですが、共有サーバー上にいるため、実行可能ファイルを実行できず、24 時間オンになっている PC にアクセスできません。スケジュールされたタスクを作成します。
私のオプションは何ですか?
cronジョブは可能でしょうか?
0 0 * * * curl -q http://www.example.com/page.aspx
ASP.NET を使用して Web サイト内からスケジュールされたタスクを実行するには、この記事を読むことをお勧めします。
あなたの最善の選択肢は、静的コンストラクター + タイマー + 1 日に 1 回だけ実行されるようにするための安全ガードです。
これを改善して、最初の実行まで丸一日待たないなどのいくつかのことを確認することをお勧めします。前回の実行が 23 時間前の場合は、1 日待たないでください。基本的に、次の実行が実行から 24 時間後であることを確認するためのいくつかの計算。
何かのようなもの、
private static DateTime _lastNavigated;
private static Timer _myTimer
static MyObject()
{
_myTimer = new Timer(24 * 60 * 60 * 1000);
_myTimer.Elapsed += MyOnceADayCode;
_myTimer.Enabled = true;
}
public static void MyOnceADayCode(object source, ElapsedEventArgs e)
{
_lastNavigated = DateTime.UtcNow;
if (DateTime.UtcNow > _lastNavigated.AddDays(1))
{
// Haven't navigated in the last day, need to navigate again
}
}
別のアイデア (アカウントがアクセスできるかどうかによって異なります) は、(コードを使用して) スケジュールされたタスクを作成することです。COM を使用してすべての作業を行う優れたラッパー クラスがいくつかあります。アプリの読み込み時にコードが確実に実行されるようにするには、静的コンストラクターが必要です。