1

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

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

我想出的最好的办法是在 mysql 表中存储一个带有用户 ID 的 mysql 字符串,并运行一个 cron 来获取所有这些并遍历它……运行 cron,如果有新广告,它会发送一封电子邮件。

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

多谢

4

2 回答 2

3

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

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

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

  2. 有一个订阅类型表

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

  4. 有一个待处理的消息表

当出现新的更新时,收集所有电子邮件并在待处理消息表中创建一个消息日志条目。

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

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

我们在所有的群发电子邮件应用程序、错误记录和提醒通知系统中都非常有效地使用了这种方法。它可能不是最好的解决方案,但事实证明它非常易于管理和灵活。

于 2009-04-09T09:08:24.187 回答
0

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

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

于 2009-04-09T09:07:58.617 回答