在PHP中构建消息传递队列

时间:2009-10-12 19:55:08

标签: php message-queue

我正在建立一个系统,通过电子邮件向订阅者发送经文。订阅者将能够:

  • 确定他们希望从
  • 接收经文的数量
  • 确定邮件的每日频率以及每封邮件中将包含多少节经文
  • 确定他们希望接收消息的时间
  • 跟踪他们的进度(这样他们可以在一段时间内阅读一本书)

我很难在数据模型周围解决这个问题。特别是,我正在努力构建和发送消息给他们。

到目前为止,我已经提出了一个订阅表,它将描述用户对每条消息的内容,频率和内容量的偏好,但我不确切地知道如何建模存储他们想要内容的时间递送

我认为一个cron作业将每小时运行一次,它将生成需要发送的消息并将它们放在message_queue表中。另一个cron作业将在message_queue表中运行并刻录,并在时机成熟时发送消息。

关于如何更有效地建模和构建此系统的任何想法?

这是我目前的数据模型:

Data Model http://www.kirkouimet.com/files/images/sendmescripture.gif

1 个答案:

答案 0 :(得分:1)

你几乎走在正确的轨道上。

如果您需要添加其他框,您建议的解决方案应该可以轻松扩展。您可以轻松划分用户群,并让每个N个框处理1 / N个用户。可以从中央DB读取首选项和经文数据,也可以将只读数据复制到从属数据库中。从站将维护自己的队列,可能会将某种汇总状态数据发送回主系统。当然,您可能会发现一切都运行正常,并且您要扩展的第一步是对各种SMTP服务器进行某种循环。我想,sendmail(或等效的)队列很容易成为你最大的,最早的瓶颈。

我会继续按照您的计划进行构建,然后非常仔细地运行一些测试以找出事情被挂起的地方。