2011-07-10 14 views
3

私はユーザー登録が必要なスクリプトを作成しています。登録すると、電子メールの検証のためにユーザーに電子メールが送信されます。ユーザーがログインしたときに電子メールを検証すると、ユーザーがサイト上で対話する他のユーザーに自動電子メールが送信されたときにユーザーが実行するさまざまなアクティビティがあります。phpとcodeigniterで一括して電子メールを送信

たとえば、ユーザーがサイトのフォロワーにプライベートメッセージを送信すると、自動的に送信された電子メールがフォロワーの電子メールアドレスに送信され、ユーザーに実行された活動が通知されます。

サイトには、毎日約2000〜5000回の自動メール送信のアクティビティを実行する約1000人のユーザーがいると考えてください。

私はcodeigniterを使用して私のウェブサイトを構築しており、電子メールが正しく配信されるようにシステムを設計できる最良の方法を知りたいと思います。

+0

次回はテキストを整形してみてください。 – rzetterberg

答えて

3

イベント/メッセージキューのケースのようです。

Web生成イベント - 登録、フォロワーへの直接メッセージなど - メッセージ/タスク/項目を作業/メッセージキューに追加します。 cronプロセスはキューを消費し、実際に送信を実行します。ここでの「メッセージ」は、割り当てられたタスクを実行するのに十分な情報を含む単なるオブジェクトまたはdbレコードであることに注意してください。送信者/ユーザーYから受信者/ユーザーZにXタイプのメッセージを送信します。アイテムがキューに追加されたとき、完了したときなどには、キューが完了したタスクがある期間後にパージされる可能性があります。

あなたのウェブプロセス(登録など)は、これらのメッセージが出るのを待っているわけではないので、ブラウザの最後で待っているクライアントは、よりスマートなWeb応答を得ます。

ウェブプロセスは、タスクが実行されたかどうかを実際には分かりません。それが知ることができるのは、リクエストが最終的に処理のキューに渡されたことだけです。

まだ、保留中/完了している要求のステータスを報告し、それで十分かもしれないWebインターフェイスをユーザーに提供できます。

ちょうど大声で考えて... ;-)

1

私はあなたがpostageapp、およびその他のようなサードパーティのサービスを使用することをお勧め。

メールを送信するのは苦痛であり、特に大事なことを送信しようとすると難しいです。

私はpostageappを提案します。私は良いサービスを使い、CodeIgniterライブラリを持っているからです!

1

私はすべてのメッセージをデータベースに追加して、クローンジョブがX分ごとにこれらの電子メールを送信するようにします。一度にすべての電子メールを送信することも、X分ごとにXメッセージを送信することもできます。登録Eメールが最初に送信されるように、何らかの優先順位を設定することができます。優先度が高くなり、最初に送信されます。

何らかのフォーラムを作成したい場合は、ユーザーがトピックを閲覧するまでトピックが新しい返信を受け取ったときにのみ1つのメールを送信することをお勧めします。これにより、トラフィックが少なく、ユーザーのスパムが少なくなります。あなたのウェブサイトにこのような機能があるかどうかはわかりませんが、このようなことがあればヒントになります。あなたはそれがかなりお使いのシステムに影響を与えますcronを使用しない場合、ユーザーに電子メールを送信するためにcronを使用し、データベース内

a)の保存ユーザアクティビティログと:

1

あなたは2つのステップを取る必要があります。

b)cronを使用して電子メールを送信する際は、MandrillやSendgridのようなサードパーティの電子メールソリューションを使用する必要があります。そうしないと、電子メールが多すぎると電子メールがスパムとしてマークされる可能性があります(これらのサービスは無料ですが、バージョンを使用して機能をテストしてください)

関連する問題