개발 Q&A

제목 메일 대량발송 어떻게 하시나요?
글쓴이 테러보이 작성시각 2016/07/14 09:20:50
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 16109   RSS
테러보이

일단 저희는 상황이 열악합니다. php 5.2에 크론 및 백그라운드 사용금지 상태에서 10만건의 메일을 발송 하는 경우가 종종 있는데요. 프로그램상 100건씩(메모리리미트나 php실행 시간에 기준하여) 발송 하는것은 무리가 있어보입니다.

 

다른 분들은 이런 열악한 환경에서 저런 처리를 하게 된다면 어떻게 처리 하시나요?

 

ps. 외부업체를 연계하기도 애매한 상황이구요. mysql처리도 포함되어있습니다 ㅠ.ㅠ

 다음글 릴레이션 테이블 설계 (1)
 이전글 동영상 서버 호스팅 ?? 질문 (2)

댓글

kaido / 2016/07/14 09:30:04 / 추천 0

저는 aws 사용를 사용해서 처리했습니다.

 

처음 웹서버는 quere 메세지만 생성 합니다.

그러면 큐 서버에 quere가 쌓입니다. SQS 

그리고 수신 하고 보내는 이메일용 서버를 오픈, 

메일 서버는 큐 메세지를 받으면 이걸 하나씩 이메일로 쏴줍니다.

그리고 보낸 메세지는 지우고.

반송되는 메일은 반송 처리해서 재 발송 처리.

일정 시간이 지나도 메세지가 없으면 스스로 서버 다운.

...

 

아니면 이글을 참고해 보세요.

http://codeigniter-kr.org/bbs/view/lecture?idx=7083

 

 

테러보이 / 2016/07/14 09:33:23 / 추천 0

@kaido 답변 감사합니다.

저희 회사가 솔루션 판매 업체다보니 aws같은 서비스를 연계하기에는 무리가 있다고 판단됩니다.(상황은 더욱 나빠지네요 ㅎㅎㅎ)

일단 큐 프로세싱 관련 되서 저도 연구 중인데요.(https://github.com/tf198/phpqueues)

큐 쌓기는 문제가 없는데 많은 큐를 어떻게 처리 하냐가 문제네요.

한서버에서 큐를 쌓고 큐를 처리하고 결국은 생으로 처리 하는것과 같지 않을까라는 생각이 들기는 합니다.

 

ps. 솔루션이다 보니 환경이 무궁무진 하여 더욱 어렵네요 ㅎㅎㅎ....

kaido / 2016/07/14 09:37:27 / 추천 0

@테러보이

저도 그생각이 들었거든요. 근데 달라요. 

메세지를 만들고 받아가서 처리하는거랑, 메세지 만들때 그냥 보내는 거랑 뭔 차이야?

라는 의문이 절 혼란 스럽게 만들었습니다만.

근본적으로 이걸 하는 이유를 생각 해야 합니다.

 

네. 이메일 이라는 애가 너무 느려요 -_-

 

너무 느려서 돌려서 만드는겁니다. 

어차피 빨리 보내지는 못하니, 작업할 일정을 걸어두고 하나씩 텀을 주고 보내는 겁니다.

그리고 메일 발송 서버를 별도로 만들어서 처리 한다는 점도 중요하구요.

 

참고로 SQS는 큐를 하나씩 밖에 안 쏩니다.

큐를 지우기 전까지 재발송도 가능 하구요.

테러보이 / 2016/07/14 09:40:15 / 추천 0

@kaido 동감입니다.

메일이라는 놈이 느린게 가장 문제지요.

일단 서버에 무슨 작업을 못하니 php큐랑 SQS를 다른 방법으로 사용 가능 한지 생각 해봐야겠네요.

백그라운드라도 되면 큐처리 파일을 백그라운드로 지속으로 돌리고 큐가 있을때마다 처리 하면 쉽긴한데... ㅠ.ㅠ;

변종원(웅파) / 2016/07/14 11:51:15 / 추천 0

이메일서버를 하나 따로 두시는 방법밖에 없을 것 같네요. 같은 서버에서 처리하는건 무리가 있구요.

 

테러보이 / 2016/07/14 12:13:52 / 추천 0

@웅파

역시 그 방법 뿐일까요 ㅠ.ㅠ;