Redis 的发布与订阅问题

看了文档这句话不是很理解,为什么要用artisan命令去执行,不用行不行,还有这条artisan命令一直在后台进程运行吗

redis的发布与订阅

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

本来用的就是Command啊,不用artisan,你用什么来启用它?除非你跳出Laravel框架用Swoole来弄或者自己写个守护进程来弄啊,发布订阅,只是在Laravel的Action中在操作某此自定义功能时发布一个消息在Redis,让所有订阅了这个Channel的客户端去接收这个消息,如果不是常注的服务怎么实现这个功能呢?

4年前 评论
张无忌

@sethhu 为什么artisan就能启动他呢,比如这段代码:

Laravel

通过其他的方式触发这段代码不行吗

4年前 评论
sethhu 4年前

亲,我们这边是建议您按照这个方式来订阅的。

如果在单独的 php 脚本中,也是可以的,但是就不能用 Laravel 里面的功能了。

不过一定要用,也不是没有办法的,但是这样的话,我们 Laravel 是不会负任何责任的~~

4年前 评论
张无忌

@largezhou这个我知道,只是一种形式触发

4年前 评论
张无忌

@largezhou 有一点不明白的事,比如上面的代码,用artisan命令触发,一开始订阅了键过期事件,只要有键过期,里面的代码就会相应的执行一遍吗,还是额外要让这个artisan常驻

4年前 评论

@张无忌

你用 artisan 执行这个命令,就是常驻的了,常驻是因为 subscribe 这个方法,,而不是你的 artisan 命令,,

之后有键过期,只会执行 subscribe 回调函数中的代码,,,

4年前 评论
张无忌

@largezhou 那之后只要有键过期的发生,程序就会自动执行这个文件下的handle方法中的 subscribe 回调函数中的代码吗......

4年前 评论

@张无忌 是啊,,但是你要保证你的命令常驻啊,,,一般用 supervisor 搞一下就可以了,,,

artisan 只是执行 handle 方法,,,而且肯定的,执行一次 artisan ,就执行一次 handle,,

之后都是 subscribe 方法的事了,

4年前 评论
张无忌

@largezhou 为什么要命令常驻.......

4年前 评论

@张无忌 不懂你的意思,,,你是说为什么要用 artisan 命令来常驻,还是 subscribe 方法为什么要常驻?

4年前 评论
张无忌

@largezhou 你的这句话 “是啊,,但是你要保证你的命令常驻啊,,,一般用 supervisor 搞一下就可以了,,,”

4年前 评论
largezhou 4年前
张无忌 (作者) (楼主) 4年前
yema

单纯的去使用redis的订阅去监听某个频道,你也得一直在频道中等待啊,既然是监听,你人不在,你怎么监听。

这里artisan就是php去监听,你用redis命令去监听,你没法执行逻辑啊是吧。那你就得用php去执行监听,才能执行php代码。

但是一般PHP的代码常驻,就是一直执行的。就是死循环,等超过最大脚本执行时间也自动结束了。

这里面PHP怎么跟redis交互就能说更多了。就不说了

最后还有守护进程,就是supervisor ,他是保证artisan一直在监听,一直在运行。

草。写评论真卡。不写了。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!