.net이 내장 된 웹 사이트에서 하루에 한 번 링크가 한 번 (한 번만) 실행되도록하고 싶습니다. 공유 서버에 있으므로 실행 파일을 실행할 수 없습니다. 예약 된 작업을 만들기 위해 24 시간 동안 스위치가 켜져있는 PC에 액세스 할 필요가 없습니다.하루에 한 번 URL을 방문하십시오.
내 옵션에는 어떤 것이 있습니까?
.net이 내장 된 웹 사이트에서 하루에 한 번 링크가 한 번 (한 번만) 실행되도록하고 싶습니다. 공유 서버에 있으므로 실행 파일을 실행할 수 없습니다. 예약 된 작업을 만들기 위해 24 시간 동안 스위치가 켜져있는 PC에 액세스 할 필요가 없습니다.하루에 한 번 URL을 방문하십시오.
내 옵션에는 어떤 것이 있습니까?
캐시 클래스를 사용할 수 있습니다. 새 캐시 항목을 추가 할 때 24 시간 만료되도록 설정하고 만료시 실행할 이벤트 처리기를 전달할 수 있습니다.
이벤트 처리기에서 캐시 항목을 재설정 할 수 있습니다.
는 Cache.Add
참조 onRemoveCallback
에 대한 매개 변수 :
onRemoveCallback - 유형 :
System.Web.Caching.CacheItemRemovedCallback
객체가 캐시에서 제거 될 때 제공되는 경우 호출되는 위임. 이 기능을 사용하여 개체가 캐시에서 삭제 될 때 응용 프로그램에 알릴 수 있습니다.
크론 작업이 가능합니까?
0 0 * * * curl -q http://www.example.com/page.aspx
의 블록을 실행할 수 있습니다»그리고 24 시간에 전환되는 PC에 대한 액세스 권한이 예약 된 작업을 생성하십시오. "- 대신 WebCron 서비스를 제안 할 수 있습니다. – Joey
당신의 최선의 선택은 단지 하루에 한 번 실행됩니다 보장에 대한 정적 생성자 + 타이머 + 몇 가지 안전 가드가 될 것입니다.
첫 번째 실행을 하루 종일 기다리지 말고 몇 가지 사항을 확인하기 위해이를 향상시킬 수 있습니다. 이전 실행이 23 시간 전이라면 하루 종일 기다리지 마십시오. 몇 가지 수학은 본질적으로 다음 실행이 실행 된 후 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을 사용하여 모든 작업을 수행 할 수있는 좋은 래퍼 클래스가 있습니다. 앱로드시 코드가 실행되도록하려면 정적 생성자가 필요합니다.
ASP.NET을 사용하여 웹 사이트에서 예약 된 작업을 수행하려면 this article을 읽어보십시오.
응용 프로그램 재시작과 관련하여 하루에 한 번 씩만 확인할 수 있습니까? 결과를 저장해야합니까? 응용 프로그램이 다시 시작되면 결과를 디스크에서 다시 읽어 올 필요가 있습니까? –
@MAfifi - essentnally URL을 hiting db.by에 저장 inculding 몇 가지 일을 코드 블록을 실행해야합니다 내가 코드 – raklos