2012-10-29 2 views
2

Symfony 2.1 프레임 워크와 SwiftMailer를 사용하는 메일 링 툴로 작업하고 있습니다.Symfony 2를 사용하여 500 그룹으로 500 개의 이메일을 보내십시오.

이 도구는 수천 개의 전자 메일을 처리해야하지만 smtp 서버 제약으로 인해 500 개의 그룹으로 처리해야합니다 (수정할 수 없습니다). 각 파도 사이에 몇 분 정도 기다려야합니다.

전적으로이 작업을 수행하는 방법을 모르겠습니다.

응용 프로그램을 실행하는 서버는 Apache 및 PHP 5.4가 설치된 Windows 시스템에 있습니다. 나는 CRON 작업을 사용할 수 있었지만 CRON과 Symfony에 관해서는 아무것도 찾지 못했습니다 (Symfony 1.1에서는 그 사실을 알 수 없었습니다).

+3

swiftmailer/다른 라이브러리 또는 일반 PHP (메일)를 사용하고 있습니까? 어쨌든 도움이 될 것입니다 : http://symfony.com/doc/2.0/cookbook/email/spool.html –

+0

고마워요! SwiftMailer를 사용하여 제 질문에 대한 답변이 될 수 있습니다. "그룹 별 전송"문제를 처리하는 것처럼 보이므로 이제 Symfony2 및 swiftmailer 풀을 사용하여 CRON을 만들어야합니다. – Link14

+0

@ VadimAshikhman, 받아 들일 수 있도록 의견을 보내주십시오. –

답변

1

여기에 Symfony의 명령 구성 요소가 내장되어 있습니다. Symfony와 함께 제공되는 일반 명령에 익숙 할 것입니다. app/console generate:bundle

사용자가 직접 작성할 수있는 컨테이너 명령을 사용할 수 있습니다.

여기에 걸릴하는 데 필요한 단계는 다음과 같습니다

  • 이 ContainerAwareCommand를 확장하는 클래스를 작성하고 확인 (아마 데이터베이스 테이블에) 보내야 할 메일의 큐를 유지는 명령 이름 : "email : send : partial"
    • 이 클래스는 데이터베이스에서 보내지 않은 이메일이 있는지 확인해야합니다. 어떤 것이 있으면 최대 500 개를 전송 한 다음 전송 된 사실을 반영하여 데이터베이스의 레코드를 제거하거나 업데이트해야합니다.
    • 그런데 ContainerAwareCommand는 물론 컨테이너를 인식합니다. 즉, Monolog, Twig 및 Doctrine과 같은 서비스에 액세스 할 수 있습니다. 따라서 $this->getContainer()->get("doctrine")을 사용하여 데이터베이스 테이블에서 보내지 않은 이메일을 검색 할 수 있습니다.
  • cron에서 메일 서버가 제공 한 간격 (실행 지연을 설명하기 위해 1-2 분 더하기)을 사용하여 정규 작업을 설정하십시오. 이에 대한 명령은 /path/to/symfony/app/console email:send:partial

입니다. 거기에 도착해야합니다. 여기에 ContainerAwareCommand 클래스에 대한 몇 가지 참조는 다음과 같습니다

http://symfony.com/doc/2.0/cookbook/console/console_command.html

http://api.symfony.com/2.1/Symfony/Bundle/FrameworkBundle/Command/ContainerAwareCommand.html

+0

이 방법을 사용하겠습니다. cron 대신 php 명령을 직접 실행할 수도 있습니다 (PHP 메소드'exec()'). 명령에'sleep()'을 사용하십시오. 나는 그것이 또한 작동해야한다고 생각하니? – Link14

+1

'sleep()'을 사용하는 것이 나에게 의미가있다. 필자는 거의 제안했지만 현재 실행이 이전 실행과 충돌 할 수 있다는 생각을 좋아하지 않습니다. 너의 전화.그러나, 왜'exec()'를 사용하는지 이해하지 못합니다. ContainerAwareCommand 클래스의 요점은 View를 작성하지 않고 PHP 코드를 실행한다는 것입니다. 'exec()'를 부를 곳은 어디입니까? –

+0

당신 말이 맞아요. 어딘가에서 코드를 호출해야한다는 사실을 잊어 버렸습니다. 그럼 CRON 해보자! – Link14

1

당신은 심포니 요리 책의 How to Spool Email 부분에이 문제에 대한 해결책을 찾을 수 있습니다.

관련 문제