2011-11-24 2 views
3

알다시피, quartz.net 스케줄러는 global.asax에서 시작됩니다. 즉, 다른 사람이 웹 사이트를 방문하지 않으면 quartz.net 스케줄러가 작동하지 않습니다. 스케줄러 스레드가 서버를 재부트하거나 IIS 풀의 프로세스가 종료 됨으로써 종료 될 수 있고 스케줄러 스레드가 다른 웹 사이트를 다시 방문 할 때까지 시작되지 않기 때문에 안전한 방법은 아닙니다.웹 응용 프로그램이 공유 호스트에서 예약 작업을 수행하는 방법은 무엇입니까?

이 문제를 해결하기 위해 Windows 스케줄러를 사용할 수 있습니다. 그러나 우리는 공유 호스트을 사용하고 있으며 서비스 또는 SQL 서버 작업을 작성하거나 호스트에서 Windows 작업을 예약 할 수 없습니다.

우리 사이트가 매일 방문된다는 확신이 들면 문제가되지 않습니다. 그렇지 않은 경우 며칠 동안 아무도 우리 사이트를 방문하지 않더라도 서버가 재부팅 되더라도 웹 스케줄러가 항상 작동하도록 어떻게 보장 할 수 있습니까?

+0

이 서비스는 도움이 될 수 있습니다. http://www.onlinecronservices.com/ – Kizz

답변

1

가장 쉬운 방법은 서버에서 예약 된 작업으로 페이지를 요청하여 작업을 트리거하는 것입니다. 이 작업을 수행 할 수있는 서버가 없다면 pingdom과 같은 것을 사용하여 n 간격으로 페이지를 조회 할 수 있습니다.

이 작업을 수행 할 서버가있는 경우 서비스를 작성할 수도 있습니다.하지만 사소한 일이라면 예약 된 작업 만 사용하게됩니다.

+1

해답을 제공해 주셔서 감사합니다. ** 그러나 우리는 공유 호스트를 사용하며 서비스를 작성하거나 그것에 작업을 예약 할 수 없습니다 **. – Max

+0

pingdom.com과 같은 사이트를 사용하여 다음 번 인턴에서 페이지를 방문 (작업을 실행) 할 수 있습니다. –

2

quartz.net을 Windows 서비스로 설치하고 원격을 통해 웹 응용 프로그램에서 액세스해야합니다. 이렇게하면 스케줄러가 항상 실행됩니다. 스케줄러를 Windows 서비스로 설정하는 방법은 다음과 같습니다. Getting Started with Quartz.Net Part 1

+0

가장 좋은 방법은 Quartz.Net을 별도의 Windows 서비스로 설치하는 것입니다. 당신이 정말로 그것을 할 수 없다면 아마도 쿼츠는 그 일에 적합한 도구가 아닐 것입니다. 이 [simple solution] (http://stackoverflow.com/)도 확인하고 싶을 수 있습니다. – yorah

+0

죄송합니다, 이전 클립 보드에 클립 보드에 잘못된 링크가 있습니다. 올바른 링크는 다음과 같습니다. http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/ – yorah