php& mysql订阅搜索/匹配查询

时间:2009-04-09 08:59:47

标签: php mysql matching subscribe

我有一个房地产网站,有几个类别。 我希望用户能够通过电子邮件订阅特定的优惠列表,它们可以是类别中的优惠......也可以是搜索列表中的优惠。

我如何以mysql的最佳方式存储他们的订阅...以及我如何进行通知。

我想出的最好的方法是将一个mysql sting存储在带有用户ID的mysql表中,并运行一个cron来获取所有这些并迭代它...运行cron并且如果有新广告则发送一封电子邮件。

但我认为这不是最好的主意,因为它也意味着如果数据库设计发生变化(例如,字段名称),那么所有这些查询都会变坏。

非常感谢

2 个答案:

答案 0 :(得分:3)

通常,您希望将表设计为尽可能灵活,以应对意外更改。如果这些字段发生变化,您的查询无论如何都需要更改。

如果没有具体细节,这些将是我的指导方针:

  1. 拥有包含索引和电子邮件的用户表

  2. 拥有订阅类型表

  3. 拥有用户ID +订阅查找表

  4. 有待处理的消息表

  5. 当存在新更新时,收集所有电子邮件并在待处理消息表中创建消息日志条目。

    构建您的Cron,每隔几分钟抓取20条未发送的邮件,并在邮件发送后删除。

    我说通过CRON迭代发送它们的原因是因为随着您的订阅者的增长,您不希望一次发出数百封电子邮件并占用服务器的邮件队列资源。您可以根据需要不断添加消息,并且您的队列将始终将其发送出去。

    我们一直在为所有群发电子邮件应用程序,错误日志记录和提醒通知系统使用此方法。它可能不是最好的解决方案,但它显示出非常易于管理和灵活。

答案 1 :(得分:0)

如果你改变数据库设计,你肯定要修复一些东西,就是这个世界的运作方式。

如果由于某种原因您很难更改cron任务,则可以创建一个始终返回适合该任务的结果集的存储过程,并改为更改存储过程。