1

私はこれに頭を包み込もうとしています:

コードベースには、 SwiftMailerを使用して電子メールの送信を開始する多くの関数があります。1秒以内に、1000人のユーザーがさまざまな機能を開始し、1つ(または複数)の電子メールが送信されるとしましょう。クラスは、DBアクセスなしで、これらの1000の要求すべてをキャプチャし、それらをキューに入れるにはどうすればよいですか?1000個のリクエストを開始する単一の関数の場合、この配列全体がクラスによってどのように繰り返されるかを理解しています。定義した「一括送信」ルールを使用します(たとえば、一度に100、2分の休憩)。しかし、私はそれが電子メールを開始する複数のユーザーからどのようにそれを行うのか理解していません。

そうは言っても、Gmail Apps SMTPサーバーを使用してすべてのメールを送信する場合の適切な制限は何ですか?上記の例で使用する1秒あたりのリクエスト数は1000に近くなりませんが、将来的には数分間で100になる可能性があります。

皆さんありがとう。

4

1 に答える 1

0

「データベース」にアクセスできない場合。オプションは次のとおりです。

  1. キューを管理するためにフラット ファイルにフォールバックします (つまり、基本的に一連のフラット ファイルを独自のデータベースとして使用し、タイム スタンプで並べ替えて、順番に送信します。同じ秒に到着したものは、任意の順序で送信されます。 ?
  2. memcached を使用して電子メールをメモリに保存します - 警告: memcached サーバーを再起動すると、すべての情報が失われます。

1 秒間に 1000 件のリクエストはかなり少ないです。私の電子メールの一般的なルールは、1 時間に 2000 件を超えることはありません。GMail はhttp://support.google.com/mail/bin/answer.py?hl=en&answer=22839で 500 個の固有の電子メール アドレスで (スパムを防ぐため) 制限を宣伝しているため、これは問題になる可能性があります。それ以上を許可するプロバイダーは他にもありますが、料金を支払う必要があります。

于 2012-08-06T01:02:54.653 に答える