2011-05-06 3 views
1

비싼 웹 작업을 처리하는 가장 좋은 방법은 무엇입니까?전자 메일 스케줄러를위한 비동기 웹 작업 필요 - 많은 팩토리 메소드 루프

나는 주어진 시간에 많은 수의 이메일을 보내는 이메일 스케줄러를 가지고있다. 현재 시스템은 전자 메일 목록을 가져 와서 구성하고 배포합니다. 그러나 이것은 목록이 커지면서 매우 비쌉니다. 생산자 - 소비자 다중 스레드 패러다임처럼 이것을 처리 할 수있는 방법이 있습니까?

나는 모든 이메일을 모으고 각자 웹 작업의 두 번째 부분을 컬 할 수 있다고 생각하고 있었다. 컬을 사용하여 주소를 전달함으로써 이메일을 구성하고 배포했다. 그러나 계속하기 전에 시스템이 컬의 응답을 기다려야한다고 생각합니까? 그래서 이것은 비동기식이 아닙니다.

이것을 수행하는 가장 좋은 방법은 무엇입니까? 지금 당장 이메일을 배달받을 때마다 cronjob을 확인하고 있습니다. 괜찮습니다. 이메일은 모두 한 번에 전달되어 전달되므로 느려질 수 있으며 다음 시간대로 중복 될 수 있습니다. 사용자는 검색 할 시간이 정해져 있습니다. 그래서 제 시간에 배달되기를 바랍니다.

스레드와 함께 처리 할 C++ 프로그램을 만들어야합니까? 또는 더 쉬운 방법으로 도망 갈 수 있습니까? 감사합니다!

+0

은 정적 인 이메일입니다 (누구나 동일한 이메일을받습니다)? 아니면 매우 개별화되어 있습니까? 현재 메일을 보낼 때 무엇을 사용하고 있습니까? PHP 메일 기능? –

+0

그들은 매우 개별화되어 있습니다. 모두 사용자와 사용자가 속한 그룹에 고유합니다. 이 규칙과 관련된 내용입니다. – Atticus

답변

0

스레드와 함께 처리 할 C++ 프로그램을 만들어야합니까? 또는 더 쉬운 방법으로 도망 갈 수 있습니까? 감사합니다!

두 번째 스레드를 만듦으로써 마술처럼 상자 밖으로 더 많은 사이클을 얻지는 않습니다. 상자에 세금이 부과되는 경우 최선책은 이메일 "스레드"를 낮은 우선 순위로 강제 적용하는 것입니다. 성능이 저하 된 백그라운드에서 실행됩니다. 또한 C++로 옮겨가는 것은 실제로 어떤 것도 해결하지 못할 수도 있습니다. 병목 현상이 코드일까요 아니면 뭔가가 이메일 전송을 차단하고 있다는 사실입니까?

궁극적으로 시간이 많이 걸리는 작업 인 경우 모든 전자 메일 처리를 별도의 상자로 오프로드하는 것이 좋습니다. 코드가 이미 전자 메일을 데이터베이스에 저장하고 있습니다. 전세계 이메일을 보내는 데 전념하는 상자를 만들어 DB에있는 이메일을 확인하고 필요할 때 보내십시오.

나는 모든 이메일을 수집하고 각 하나를 웹 작업의 두 번째 부분을 곱슬 곱슬 수있는 생각

- 건설 및

내가 아니었다 컬과 주소를 전달하여 이메일을 배포 니가 여기서 무엇을 의미하는지 확신해라. 그러나 어딘가에 curl'ing이 그 서버에 대해 더 빠를 것이고 단지 이메일을 보내는 것이 아닌지 당신은 알고 있습니까? 좀 느려질 수도 있니?