我有一个房地产网站,有几个类别。 我希望用户能够通过电子邮件订阅特定的优惠列表,它们可以是类别中的优惠......也可以是搜索列表中的优惠。
我如何以mysql的最佳方式存储他们的订阅...以及我如何进行通知。
我想出的最好的方法是将一个mysql sting存储在带有用户ID的mysql表中,并运行一个cron来获取所有这些并迭代它...运行cron并且如果有新广告则发送一封电子邮件。
但我认为这不是最好的主意,因为它也意味着如果数据库设计发生变化(例如,字段名称),那么所有这些查询都会变坏。
非常感谢
答案 0 :(得分:3)
通常,您希望将表设计为尽可能灵活,以应对意外更改。如果这些字段发生变化,您的查询无论如何都需要更改。
如果没有具体细节,这些将是我的指导方针:
拥有包含索引和电子邮件的用户表
拥有订阅类型表
拥有用户ID +订阅查找表
有待处理的消息表
当存在新更新时,收集所有电子邮件并在待处理消息表中创建消息日志条目。
构建您的Cron,每隔几分钟抓取20条未发送的邮件,并在邮件发送后删除。
我说通过CRON迭代发送它们的原因是因为随着您的订阅者的增长,您不希望一次发出数百封电子邮件并占用服务器的邮件队列资源。您可以根据需要不断添加消息,并且您的队列将始终将其发送出去。
我们一直在为所有群发电子邮件应用程序,错误日志记录和提醒通知系统使用此方法。它可能不是最好的解决方案,但它显示出非常易于管理和灵活。
答案 1 :(得分:0)
如果你改变数据库设计,你肯定要修复一些东西,就是这个世界的运作方式。
如果由于某种原因您很难更改cron
任务,则可以创建一个始终返回适合该任务的结果集的存储过程,并改为更改存储过程。