2009-04-09 14 views
0

私はいくつかのカテゴリを持つ不動産のウェブサイトを持っています。 そして、ユーザーが特定のオファーリストに電子メールで登録できるようにするには、カテゴリからのオファーまたは検索リストからのオファーのどちらかにすることができます。php&mysqlは検索/照会のクエリに登録します

どのように私は彼らがサブスクリプションをmysqlで最良の方法で保存することができます...また、私は行くと通知を行う方法。

私が思いついたのは、ユーザーIDを使ってmysqlテーブルにmysqlスティグを格納し、それをすべて取り込んでそれを繰り返すcronを実行することです... cronを実行し、新しい広告があれば電子メールを送信します。

しかし、データベースデザイン(例:フィールド名)に変更があると、すべてのクエリが悪くなるということも意味するので、これは最善の考えではないと思います。たくさん

答えて

3

一般に、予期しない変更を考慮するために、できるだけ柔軟にテーブルを設計したいと考えています。これらのフィールドが変更された場合は、クエリを変更する必要があります。

詳細をせずに、これらは私のガイドライン次のようになります。

  1. は、インデックスと電子メール

  2. とユーザーテーブルを持っているサブスクリプション型のテーブルを持っている

  3. は、ユーザーIDを持っています+購読ルックアップテーブル

  4. 保留中のメッセージテーブルがある

新しい更新プログラムが存在する場合は、すべての電子メールを収集し、保留メッセージテーブルにメッセージログエントリを作成します。

数分ごとに20の未送信メッセージを取得し、送信されたメッセージを削除するようにCronを構築します。

私が繰り返しCRONを使って送信する理由は、あなたの加入者が成長するにつれ、数百の電子メールを一度に外出してメールキュー用のサーバーリソースを確保したくないからです。必要に応じてメッセージを追加し続けることができ、キューが一貫してメッセージを送信します。

私たちは、すべての大量メール送信アプリケーション、エラーログ、リマインダー通知システムにこの方法を使用してきました。それは最善の解決策ではないかもしれませんが、非常に扱いやすく柔軟であることが示されています。

+0

私はサブスクリプションテーブルにクエリを保存しても問題ありませんか?またはそれを別の方法で保管することを推奨しますか? –

+0

どのクエリですか?あなたはこのプロセスを通していくつか持っています。 – jerebear

+0

ユーザーが購読したい広告をつかむもの –

0

おかげで、データベースの設計を変更した場合、あなたは確かに何かを修正する必要があります。これは、この世界がどのように動作するかです。

何らかの理由でcronタスクを変更することが困難な場合は、タスクに適した結果セットを常に返すストアドプロシージャを作成し、代わりにストアドプロシージャを変更できます。