gpt4 book ai didi

redis - 使用 Redis、Python 和 PHP 的基于事件的邮件

转载 作者:行者123 更新时间:2023-12-03 06:36:54 25 4
gpt4 key购买 nike

我想经常从 Python 组件向 Redis 服务器发布消息。然后,在另一个也可以访问此 Redis 服务器的 PHP 组件中,我想根据存储在 Redis 中的消息向用户发送电子邮件。如果我没记错的话,有两种方法可以做到这一点:推拉式和推推式设计:

拉动设计

PHP组件频繁向Redis服务器发起请求,当有新消息时,做出 Action 。

推送设计:

我们不需要从 PHP 组件发出这些频繁的请求:每当在 Redis 中发布新消息时,都可以触发来自 PHP 组件的操作。

我的问题

我们如何实现 Push-Push 设计?当我阅读有关 Pub-Sub 模型的 Redis 文档时,我没有找到任何相关信息。所以我真的不明白我们如何以另一种方式触发一个 Action ,然后向 redis 服务器发出频繁的请求。

最佳答案

您需要使用 nohupsupervisorupstart 等解决方案将“长时间运行”的 php 进程作为守护进程运行。此进程将继续作为守护进程工作以使用您的 redis channel。 Python 将继续生产,PHP 将继续消费。

有几个库可以将 php 进程作为守护进程运行,例如 reactphp或者,如果您使用的是 laravel 等框架,它提供了一个很好的发布/订阅 interface .

会是这样的;

PHP 部分将订阅我的 channel

127.0.0.1:6379> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1

python 将发布我的 channel

127.0.0.1:6379> publish mychannel myemailjson
(integer) 1
127.0.0.1:6379> publish mychannel myanotheremailjson
(integer) 1
127.0.0.1:6379>

与此同时,您的 php 进程将收到该消息

1) "message"
2) "mychannel"
3) "myemailjson"
1) "message"
2) "mychannel"
3) "myanotheremailjson"

在该 subscriber php 进程中,您将在收到消息时调用/触发/分派(dispatch)您的电子邮件传送作业(可能是异步的)。

关于redis - 使用 Redis、Python 和 PHP 的基于事件的邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61822877/

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