2012-04-20 27 views
1

あなたの意見では(感情とは対照的に、事実に基づいて形成されることを望みます)、ウェブサイトから電子メール通知を送信するより良い方法は何ですか?例えば電子メール通知を即時/オンデマンドで送信するかスケジューラ/ Cron経由で送信する

、あなたがユーザーB

に送信する電子メールを生成し、その時点では、質問がある、あなたのサイト上でユーザーAがユーザーBとの友情を要求したと言う - 送信するのに最適な時間があるときEメール?直ちに、同じ実行パスの一部として、または電子メールをバッチの一部としてスケジューリングしますか?

私は言ったように、私の質問はかなり一般化されているので、あなたは別のアーキテクチャを想定することができます - 一つのサーバーはホスティング専用、もう一つは電子メール専用、一つのサーバーは、クラウドホスティング、など...私はすべての答え、 本当に。私はそれを参照したよう

は:すぐに電子メールで

を、あなたはタイムリーな電子メールを取得していますが、潜在的にあなたのウェブサイトは多くのトラフィックを受信する必要があり、あまりにも多くの電子メールを送信することで、サーバーを行き詰まらすることができます。あなたは電子メールのバッチを送信していないので、それは言われている、彼らはすべてのワンオフです。

電子メールをバッチ処理し、スケジュールされたタスクまたはcronジョブでピックアップして送信すると、電子メールは即時ではないため、1分ごとにバッチが送信されるように間隔を減らすことを前提にしてください。問題は並行処理と見なされます。最初の処理が完了する前に別のバッチが実行された場合、送信しているものを適切にフラグを立てたりロックしたりしないと、2回の電子メールを送信する危険があります。

私の個人的な経験では、トラフィックが多いサイトですぐに電子メールを送信したときに、多くの電子メールが送信されなかったにもかかわらず、パフォーマンスにはあまり影響がありませんでした。

思考?

+2

'この質問は、意見、議論、議論、ポーリング、または拡張された議論を要請する可能性が高いでしょう」 - それは、cron/batch処理がこのIMHOを行う方法であるということです。 HTTPのパースペクティブ - リクエストが完了する前に電子メールが送信されるのを待つ必要はなく、リクエストが完了して応答を完了します。また、同じ電子メールアドレス宛ての2つのメッセージがキューにある場合、メッセージのマージなどの簡単な実装も可能です。 – DaveRandom

答えて

1

私は間違いなくスケジュールと言います。他の人を他の人にすることができるかのように、同じ人物との友情を拒否することができるかのように、ユーザー要求とそのサーバーアクションの面では、面倒でなければなりません。もしそうなら、私はあなたのウェブサイト上で迅速に受け入れ、クリックを拒否します。 ?

あなたはこのケースでは2つのオプション、IMOがあります。

  • SO、(あなたが受け入れ、2秒で拒否することはできません)ユーザーがクリックする上でいくつかのタイミングを追加しない

  • かなどをことができますが、この時点で友情が要求/承認された人への最後のメッセージは、サーバー上でスケジュールされ、30分後に、たとえば、送信されます(以下、建築家の選択の問題)

これが役に立ちます。

関連する問題