2009-06-04 3 views
4

classic-asp 앱에서 백그라운드 작업을 통해 이메일을 보내야하므로 느린 웹 서버가 이메일 전송을 완료 할 때까지 기다릴 필요가 없습니다.클래식 ASP에서 멀티 스레딩/백그라운드 프로세스를 수행하는 방법

두 개의 별도 요청을 생성하기 위해 Ajax를 사용할 수 있지만 Javascript가 필요하지는 않습니다. 게다가이 문제를 해결할 더 좋은 방법이 있다고 생각합니다. 아이디어?

+4

더 나은 방법 : 기존 ASP를 사용하지 마십시오. 미안, 나는 저항 할 수 없었다. :) – Zifre

+0

나쁜 놈이되지 마십시오. – RedFilter

+1

그는 농담이 아닙니다. 그는 현실 주의자입니다. –

답변

11

너무 좁게 생각하고 있습니다. ASP에서 이메일을 보낼 필요는 없습니다. 그것을 데이터베이스에 넣은 다음 매 분마다 실행되는 별도의 프로그램을 만들어 데이터베이스에있는 모든 전자 메일을 보냅니다.

+2

+1로 업그레이드하는 것처럼 간단한 경우. 가장 간단한 솔루션은 예약 된 작업으로 실행되는 VBScript입니다. – AnthonyWJones

+0

큰 대답은 이것으로 생각했지만, 예약 된 작업과 매분마다 DB에 연결/읽기/쓰기의 오버 헤드를 사용하는 데 필요한 1 분 지연을 피하려고합니다. 따라서 별도의 프로그램을 VBscript에서 백그라운드로 실행하는 방법은 없습니다. –

1

미안하지만 이전 버전의 ASP를 사용하여 별도의 스레드를 생성 할 수있는 방법이 없었습니다.

숨겨진 IFRAME에 대해 AJAX가 필요하지 않은 경우? 못생긴하지만 작동 ...

2

IIS에 내장 된 것보다 훨씬 잘 처리 할 수있는 3rd party COM objects이 있습니다. 메시지를 전달하면 대기열을 처리하므로 프로그램에서 즉시 제어권을 얻을 수 있습니다.

0

CDOSYS가 웹 서버의 IIS 픽업 디렉터리 (일반적으로 c : \ inetpub \ mailroot \ pickup)를 사용하도록 지시하는 것이 좋습니다. 웹 서버에 SMTP 가상 서버가 설치되어 있다고 가정합니다.

비슷한 또 다른 빠른 옵션은 * .EML 파일을 수동으로 생성하여 픽업 디렉토리에 저장하는 것입니다. 또한 가능한 충돌을 방지하기 위해 파일을 임시 디렉토리에 넣은 다음 일} 처리 파일로 특정 간격으로 파일을 픽업 디렉토리로 이동할 수 있습니다.

3

나는 이것에 대해 tomjen과 동의 할 것이다. 데이터베이스 테이블에 전자 메일을 저장 한 다음 백엔드 프로세스를 사용하여 실제 전자 메일을 보내면 특히 대량의 전자 메일을 보내는 경우에 효과적입니다. 쉽게 작업을 완료 할 수있는 여러 패키지가 있기 때문에 백엔드 메일러를 사용하는 Perl에게 권장합니다.

1

다른 제안을 사용하고 싶지 않은 경우 전자 메일을 보내고 COM 또는 로컬 (로컬) TCP 소켓을 통해이 프로그램과 통신하는 다른 프로그램을 실행 해보십시오. 이것은 인터넷을 통해 서버에 연결하는 것보다 훨씬 빠르며 데이터베이스 사용 지연을 방지해야합니다.

2

Persits는 사용자가 필요로하는 메일 큐 시스템과 함께 제공되는 잘 알려진 AspEmail COM 구성 요소를 생성합니다.

http://www.aspemail.com/manual_07.html

코드는 기본적으로 서버에서 실행함으로써 마무리에서 ASP 스크립트를 들고 있지, 별도의 프로세스에서 큐에있는 어떤 메일 전송 큐 데몬에 메시지의 전송을 손 그것의 실행.

+0

Thanks Frank - 게시 한 후 실제로 라이센스가 있음을 알고 대기열 설치가 잘되었습니다! –

+0

도움이 될 수있어서 다행입니다. :) –

관련 문제