2011-03-03 6 views
6

정크 마케팅의 경멸을 제쳐두고 고객에게 약 15,000 건의 이메일을 보내야합니다. 내 동료가 PHP 메일 루프를 통해 그들을 보내려고했지만 분명히 빨리 붙어옵니다. 이 작업을 신속하게 완료하기 위해 기존의 PHP 스크립트를 사용하고 있습니까? 그렇지 않다면, 나는 오버 헤드없이 너무 많이하지 말고 (어쩌면 exec을 통해) 어떻게 할 것을 제안합니까?PHP : 엄청난 양의 이메일을 일괄 적으로 보내십시오.

감사합니다.

+1

스위프트 메일러? http://swiftmailer.org/ – lam3r4370

답변

4

PEAR의 Mail_Queue을 사용하여 한 번에 200,000 개 이상의 메일을 대기열에 올려 놓았습니다. 데이터베이스를 채우는 것은 사용자 정의 된 컨텐츠로도 쉽고 빠릅니다. 그리고 나서로드 평균이 너무 높지 않으면 상당히 간단한 스크립트가 약 250 개의 시간을 보냅니다. 그런 다음 루프를 돌리고 다음 배치를 전송합니다.

일반적으로 가능한 것보다 빨리 보내지는 않으나 문제없이 수행 할 것입니다.

tutorial은 거의 모든 것을 제공합니다. 데이터베이스 큐가 비워 질 때까지 'send_messages.php'스크립트 (명령 줄에서 더 좋음)를 반복하면됩니다.

+0

고맙습니다. – Gal

0

CGI 또는 명령 줄에서 스크립트로 실행하고 있습니까? 명령 줄에서 스크립트로 실행하는 것이 가장 좋습니다.

막혔다 고 말하면 set_time_limit(0);을 실행하여 PHP 실행이 너무 길어지는 것을 막으십시오.

+0

두 가지 해결책을 찾고 있습니다. 설정 시간 제한은 모두 보내려면 너무 오래 걸립니다. 명령 줄에서 어떤 스크립트를 사용해야합니까? – Gal

+0

아무 것도 변경할 필요가 없습니다. PHP 스크립트는 명령 행에서 실행될 수 있습니다. –

1

즉석 배달을 구현하는 방법과 상관없이 항상 긴 시간이 걸리므로 중단이 발생할 수 있으며 배달을 다시 시작하고 5,000 명의 고객에게 동일한 메시지를 두 번 보낼 수는 없습니다.

신뢰할 수있는 시스템에서는 대기열을 사용해야한다고 생각합니다. 기본 스크립트는 단순히 수신자를 대기열에 추가 한 다음 대기열에서 항목을 선택하고 전송 한 다음 마지막으로 전송으로 표시하는 보조 프로세스를 갖습니다. 이 보조 프로세스는 수동으로 (명령 줄에서) 또는 cron 탭을 통해 시작할 수 있습니다.

내가 사용한 적이하지만 난 내 북마크이 있습니다 http://ledscripts.com/free/php/phpledmailer

+0

-1 : MTA ** IS **는 대기열 시스템입니다. – symcbean

+0

@symcbean - 그리고 파리는 프랑스의 도시입니다. 귀하의 downvote 및 코멘트 가이 질문과 어떤 실제 관계가 있습니까? –

+0

일반적으로 좋은 조언을 제공하지만 큐잉 시스템을 사용하지 않고 이메일을 전송하는 것은 사실상 불가능합니다. 이미 잘 작성된 대기열 시스템이있는 경우 PHP에서 더 많은 대기열을 구현해야하는 이유는 무엇입니까? 대기열? – symcbean

관련 문제