C#의 .NET 3.5 웹 사이트에서 사용자가 웹 페이지에서 제출을 클릭하면 보고서에 전자 메일 주소로 가입됩니다. 불행히도이 작업은 약 5 분이 걸리고 사용자는 앉아서 확인을 기다려야합니다. 내가 뭘하고 싶은지 그들이 그것을 클릭하면 그들이 구독을 통해 통보 될 것이라고 이메일을 통해 통보됩니다 팝업을 얻을 수 있도록, 그 사이에 내가 다른 곳에서 서버에 가입 작업을 대기열에 그렇게 그것을 변경하는 것입니다 그것은 웹 코드에 존재하지 않습니다. 이것을 할 수있는 방법을 제게 줄 수 있습니까? 기본적인 아이디어는 두 개의 다른 실행 행으로 나뉘어서 우리 웹 사이트를 계속 탐색 할 수있게하고 다른 하나가 그들을 구독 할 수있게하려는 것입니다. 나는 새로운 스레드로 분할을 생각하고 있었지만 웹 코드는 여전히 그 스레드가 다른 것을하기 전에 완료 될 때까지 기다려야한다고 생각한다. 나는 아이디어를 찾고 있는데, 가급적이면 같은 서버에서 실행할 수있는 것입니다. 감사!가입시 사용자가 확인을 위해 웹 페이지에서 대기하는 데 너무 오래 걸립니다 ... 솔루션?
답변
오랜 시간이 걸리고 실제로 작업하기를 원한다면 최선의 방법은 대기열에 넣는 것입니다.
기본적으로 요청을 제출하면이를 데이터베이스 테이블에 저장하고 계속 이동하도록하십시오. 그 동안 요청을 처리하기 위해 해당 테이블을 모니터링하는 다른 프로세스를 보유하십시오. 그들이 들어 오면이 두 번째 프로세스가 완료 될 때까지 5 분이 걸리는 부분으로 요청을 보냅니다.
일단 끝나면 "그러한 이메일 목록에 환영"메시지를 보내십시오. 그것은 그것이 효과가 있다는 것을 확인하는 역할을 할 것입니다.
많은 옵션이 있지만 기본적인 접근 방법은 사이트를 제공 업체와 분리하는 것입니다. 대신 "사용자 X가 구독 대기 중입니다"라는 레코드를 작성하면 별도의 프로세스에서 해당 레코드를 읽고 실제 구독을 수행하면서 레코드를 "진행 중"으로 표시합니다. 프로세스가 완료되면 레코드가 완료된 정보로 다시 업데이트됩니다.
데이터베이스, 메시지 큐 또는 다른 방법으로이 작업을 수행 할 수 있습니다. 그러나 근본적으로 귀하의 사이트는 기록을 작성하고 상태를 확인하는 책임 만 있습니다. 공급자와의 실제 상호 작용은 별도로 처리됩니다.
제프 앳 우드 (Jeff Atwood)는 관련 주제를 잠시 후 블로그에 올렸습니다. C#을 사용하고 있기 때문에 ASP.NET을 사용하고 있으며 캐시 메커니즘을 활용하여 정기적 인 작업자 작업을 시작할 수 있다고 가정합니다. 사용자의 요청에 따라 구독 세부 정보를 일부 데이터 저장소에 보관할 수 있습니다. 이 작업에서 대기열을 검사하여 어떤 구독을 만들어야하는지 결정한 다음 실행할 수 있습니다.
http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
- 1. iOS 앱을 실행하는 데 너무 오래 걸립니다.
- 2. CPIO 명령을 완료하는 데 너무 오래 걸립니다.
- 3. UIView가 업데이트하는 데 너무 오래 걸립니다.
- 4. Jenkins가 실행하는 데 너무 오래 걸립니다.
- 5. WCF 스트리밍이 너무 오래 걸립니다.
- 6. ColdFusion에서 파일 업로드가 너무 오래 걸립니다.
- 7. VS 디버그 모드에서 Nunit을 감지하는 데 너무 오래 걸립니다.
- 8. SL4 + RIAServices 앱을 빌드하는 데 VS2010이 너무 오래 걸립니다.
- 9. 내 페이지를로드하는 데 너무 오래 걸립니다! 페이지로드 시간을 줄이려면 어떻게해야합니까?
- 10. HttpListener 생성자가 시스템 시작시 너무 오래 걸립니다.
- 11. NSOperation cancelAllOperations 작업을 취소하는 데 너무 오래 걸립니다.
- 12. SQL 서버가 업데이트 쿼리를 실행하는 데 너무 오래 걸립니다.
- 13. Magento 데이터 흐름이 CSV 파일을로드하는 데 너무 오래 걸립니다.
- 14. 빌드 안드로이드 프로젝트가 Eclipse에서 너무 오래 걸립니다.
- 15. IntellIj 인덱서가 너무 오래 걸립니다. 어떤 대안?
- 16. 도달 가능성의 SCNetworkReachabilityGetFlags 반환하기에 너무 오래 걸립니다.
- 17. Gui 테스트가 너무 오래 걸립니다. 어떻게해야할까요?
- 18. Http 요청이 처음으로 느리고 너무 오래 대기하는 경우
- 19. 안드로이드 소켓 연결이 너무 오래 걸립니다
- 20. SSIS 패키지에서 Insert 문이 너무 오래 걸립니다.
- 21. Wordpress는 타임 아웃까지 게시하기에는 너무 오래 걸립니다.
- 22. 왜 이미지를로드하는 데 시간이 너무 오래 걸립니까?
- 23. MKOverlay가 비동기 호출에서 표시하는 데 오래 걸립니다.
- 24. HttpWebResponse로 페이지를로드하는 데 너무 오래 걸리는 경우
- 25. IronRuby가로드되는 데 시간이 오래 걸립니다. 이게 정상인가?
- 26. 페이지 인덱스를로드하는 데 너무 많은 시간이 걸립니다.
- 27. 왜 ASP.NET 웹 사이트를 시작하는 데 너무 오래 걸립니까?
- 28. MSAccess 쿼리를 실행하는 데 너무 오래 걸림
- 29. 너무 오래 걸립니다. ephtmltopdf를 사용하여 html을 pdf로 변환하십시오.
- 30. mysql 쿼리를 실행하는 데 너무 오래 걸림
당신은 '과정'당신이 바로, 다른 프로그램이 서버에서 실행중인 쓰기 의미하는 말? 프로세스에 특별한 것이 없습니까? – james
@milly : 그게 정확히 무슨 뜻이야. 또 다른 프로그램 : 일반적으로 Windows 서비스. – NotMe