gpt4 book ai didi

php - 帮助我了解消息队列的工作原理

转载 作者:可可西里 更新时间:2023-11-01 13:23:38 27 4
gpt4 key购买 nike

使用 PHP 已经有一段时间了,我想知道整个“消息队列”是什么意思。让我们以 Facebook 为例。我可以更新我的状态,但我必须向我所有的 friend 显示状态更新(假设我有 3000 个关注者)。如果有评论,则需要做更多的工作,并且必须通过电子邮件通知所有发表评论的 friend 。在我看到的例子中,消息队列所做的一切似乎都是获取“消息”(我的状态更新)并将其放入某个临时空间(文件系统或数据库表)。然后我有一个 cron 作业将它拉出来并更新我的表。

话虽如此,我该如何处理这些数据?我想我对这将如何真正帮助我感到困惑。如何将以下函数转换为消息队列,然后安排函数稍后运行?

1 - 更新我的状态2 - 现在将它发布到我的页面和我所有的 friend 。3 - 如果还有评论,现在将最新评论通过电子邮件发送给“订阅”该评论的人。

我的问题是,我该如何操作这些数据?我是否只是插入“评论”然后有一个“工作”来提取该评论并将其插入处理它的函数?

这是我计划研究的示例。

http://www.freeopenbook.com/php-hacks/phphks-CHP-5-SECT-18.html

提前致谢。

最佳答案

My question is, how do I manipulate that data? Do I just insert the "comment" then have a "job" that pulls that comment out and plug it into a function that processes it?

没错。

在 Facebook 页面上发布状态更新可能不涉及消息队列——我实际上并不知道他们的具体设计,但我猜更新的数据只是在用户加载他们的页面时通过查询按需提供。 (除非 Facebook 有单独的流程来对状态更新数据进行反规范化。)1

相比之下,发送状态更新电子邮件通知是消息队列的理想选择。

典型的实现会涉及将新消息(通常是最小的,可能只是您的用户 ID)写入特定的消息队列——可能是“EmailStatusUpdateNotifications”队列。

然后另一个进程将消息从队列中取出并确切地知道如何处理它们。专用于发送状态更新电子邮件消息的进程将使用用户 ID(消息的内容)加载您的当前状态和您 friend 的电子邮件地址列表,构建电子邮件消息并发送它们。

1事实证明,您可以在Why are Facebook, Digg, and Twitter so hard to scale? 中找到很多关于Facebook 架构的有用信息。具有高可扩展性。

关于php - 帮助我了解消息队列的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com