Symfony2 と Swiftmailer に基づいて、毎週のニュースレターを約 17,000 人に送信しようとしています。私の現在の問題は、コンソール用のコマンドを書いたことです。たとえば、「php app/console mail:send --newsletter 0 500」で呼び出すことができます。最後の 2 つの数値は、一度に選択する必要があるオフセットと受信者数の追加変数です。私が通常やりたいことは、このコマンドを 1 回呼び出す cronjob を使用することです。この場合、すべての受信者を取得するために 0 のオフセットと 20.000 の量を指定します。これが機能していないか、少なくともメールの量が多すぎます。私の最初のテストは、これらのメールを自分で送信して、何が起こっているかを確認することでした。スクリプトは、500 以下になるまで終了しませんでした。これは正常ですか?
これが私がすることです:
- DB からユーザーを取得する
- このニュースレターで送信したい DB の記事を見つける
- $message = \Swift_Message::newInstance()... によって新しいメッセージを生成し、$this->mailer->send($message); を呼び出します。
最後に、次のようにしてキューをフラッシュします。
$spool = $this->mailer->getTransport()->getSpool(); $transport = $this->getContainer()->get('swiftmailer.transport.real'); $spool->flushQueue($transport);
私がよくわからないのは、これらすべてのメールを今どのように送信すればよいかということです。一度に 500 通のメールのみが生成されるように、オフセットを変更してこのコマンドを反復する cronjob を使用してシェル スクリプトを呼び出すのは間違っていますか? または、これを行う正しい方法は何ですか? それとも、私のやり方が間違っていて、500 件以上送信できないのでしょうか? たとえば、1000 の場合、スクリプトをキャンセルするまで、コンソールは反応しなくなります。すでにバックグラウンドで起動しようとしましたが、スクリプトがまったく機能していないようでした...エラーなどは発生せず、反応はありませんでした。
編集:または、おそらくSwiftMailerでも使用されているmail()関数でPHPを使用する代わりに、特定のメールボックスを使用してこれらすべてのメールを送信する方がよいでしょうか?
ご助力ありがとうございます!マヌエル