2012-07-30 2 views
2

다음 작업을 수행하려고합니다. MySQL과 ASP.NET을 사용하고 있습니다. 나는 테이블에 카운터를 만들고있다. 카운터 열이 매일 0으로 재설정되기를 바랍니다. 이를 달성 할 수있는 방법이 있습니까?특정 시간에 한 번만 테이블을 지우십시오. (매일)

Windows에서 관리자 작업을 사용하고 .exe 파일을 만들지 않으려합니다. 나는 코드에서 C#으로 그렇게 할 수있는 것을 선호한다.

내가 이것을 해결하는 방법은 false로 설정 될 Application 변수를 만드는 것입니다. 응용 프로그램 페이지에서 DateTime.Now를 쿼리하고 현재 시간을 가져옵니다. 시간이 12:00이고 Application 변수가 false이면 함수를 실행하고, 그렇지 않으면 아무것도하지 않습니다. 시간이 13:00이고 Application 변수가 false이면 true로 설정하십시오.

시간 차이만으로 실행되는지 확인하십시오. 내 페이지를 방문한 모든 사용자는 if 문을 트리거합니다. 그러나이 기능은 하루에 한 번만 실행됩니다.

좋은 해결책입니까?

+6

그 시간 동안 아무도 내 애플리케이션을 방문하지 않으면 어떻게됩니까? ASP.net은 이런 종류의 작업을 위해 설계된 것이 아니며, 예약 된 작업/서비스를위한 것입니다. – Paddy

+0

S I 내가 11 시간 차이 확인을 할 것입니다 –

+0

Inorder 스케줄러를 만들려면 exe 또는 Windows 서비스가 필요하지 않습니다. .aspx 페이지 자체를 예약 할 수도 있습니다. 왜 스케쥴러에 갈 수 없어? – shajivk

답변

0

귀하의 의견을 읽은 후, 저는보다 효율적인 해결책을 위해 더 많은 노력을 기울여야한다는 것에 동의합니다.

1) 이 같은, 특정 페이지를로드하고, 심지어 특정 파일에 결과를 저장할 VBS 스크립트 만들기 다음과 같이

나는 VBS 스크립트를 사용하여 Microsoft 작업 스케줄러를 사용하기로 결정했습니다 :

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

나는 당신이 코멘트의 요점을 놓쳤다 고 생각한다. 그것은 태스크 스케줄러를 사용하여 페이지를 열지 않기 때문에 명령 스케줄러를 사용하여 원하는 쿼리를 실행할 수있다. –

0

당신이 카운터를 12:00으로 재설정하려면,하지만 아무도이 13시 15분 때까지 귀하의 사이트를 방문, 당신은 정말 다시는 그 이후에 발생하는 것을 걱정하지 않는다 :이 그 동안에는 셀 수 없었던 것입니다.

당신이 할 수있는 일은 부울 ('재설정'), 날짜 ('재설정 완료')를 기억하지 못하는 것입니다. 현재 시간이 12시 이후 인 경우 저장된 데이터를 현재 날짜와 비교하여 확인하십시오. 일치하지 않으면 카운터를 재설정하고 저장된 날짜를 업데이트하십시오.

관련 문제