1

マルチテナントサイトがあります。私のクライアントの中には、あちこちで1通のメールを送信するものもあれば、一度に1,000通を送信するものもあります。

メールサーバーとしてSendGrid.comを使用し、PHPコードとしてSwiftMailer.orgを使用しています。

問題は、各メールの送信に1秒ほどかかることです。認証などのためにSendGrid.comに接続する必要があると思います。したがって、1,000通の電子メールを送信すると、本質的には約1,000秒でタイムアウトになります。

私が考える最善の方法は、電子メールをデータベースに保存してから、cronジョブがそれらを送信することです。

それが最も効果的な方法でしょうか?また、一度に特定の量の電子メールのみを送信する必要がありますか?たとえば、cronジョブごとに100ですか?

私がcronジョブのテーマに取り組んでいる間、cronジョブは重複して実行できますか?したがって、毎分cronジョブを実行し、ページがすべての電子メールを送信するのに2分かかった場合、cronジョブは1分後に再度実行されますか、それとも最後のcronジョブが処理されるまで2分待機しますか?

ご協力いただきありがとうございます!

ベン

4

1 に答える 1

1

IO バウンド タスク (この場合はネットワーク/ネットワーク サービス IO) があります。

IO バウンド タスクは、マルチスレッドに最適です。

送信アプリケーションで複数のスレッドを開始して、複数のメール送信リクエストを並行して処理します。

電子メールを送信する準備ができているかどうかを定期的に確認したい場合は、cron が適しています。ただし、代替手段として、常に実行されている (そしておそらく断続的にスリープしている) デーモン (別名サービス) を検討したい場合があります。

于 2012-08-09T03:33:20.827 に答える