Redis pub/sub 在 php 中是否现实?
is redis pub/sub realistic in php?
我想在 PHP 中使用 redis pub/sub,但恐怕 PHP 不是唯一的工具:订阅者需要始终可调用,由于 php 不是为 运行 作为守护程序构建的,我不能相信它总是可靠地“打开”。
那么 PHP 世界的解决方案是什么?
- 不要使用 pub/sub,使用其他 redis 的存储,每 x 分钟 php 启动一个 crontask
- 使用会调用 php?
的经纪人
- 其他?
用“2”。我的意思是:使用 nodejs/java/fooBar 服务器,它是守护进程订阅者并回调 php(使用 http/cli 或其他)。
我找不到比“2”更好的主意了。 , 但同样的方式似乎很无效...
你有什么看法?
编辑:
您将如何使用像 platform.sh 这样的云平台来做到这一点,它没有机会获得 supervisor.d 相似的东西?
感谢评论,我找到了一个令人满意的方法:使用 supervisor.d 将重新启动一个 symfony 命令脚本:
set_time_limit(0)
- 无限循环
- 对 redis 的阻塞调用(
BRPOP
的最大方式为 1 秒。低于 read_write_timeout)
- 执行阻塞命令很重要,以免消耗所有 CPU 时间
- 我会去一个真正的 pub/sub,但现在,我只有一个听众,所以没关系
我可以从早期的角度判断:
- supervisor.d真的很容易install/configure,文档很完整,我没运行任何问题,难得+满意!
- 好像还不错
- 写了日志,以后崩溃时更容易理解
- 如果连续X次崩溃,服务就停止了,我没有找到通知的方式,这真的是个问题,我想我会去this solution(doc )
- 就像@Mike Miller 说的:“唯一要记住的是你这样做是你需要在代码更改后重新启动,否则它会 运行 保留你的旧代码"
我想在 PHP 中使用 redis pub/sub,但恐怕 PHP 不是唯一的工具:订阅者需要始终可调用,由于 php 不是为 运行 作为守护程序构建的,我不能相信它总是可靠地“打开”。
那么 PHP 世界的解决方案是什么?
- 不要使用 pub/sub,使用其他 redis 的存储,每 x 分钟 php 启动一个 crontask
- 使用会调用 php? 的经纪人
- 其他?
用“2”。我的意思是:使用 nodejs/java/fooBar 服务器,它是守护进程订阅者并回调 php(使用 http/cli 或其他)。
我找不到比“2”更好的主意了。 , 但同样的方式似乎很无效...
你有什么看法?
编辑: 您将如何使用像 platform.sh 这样的云平台来做到这一点,它没有机会获得 supervisor.d 相似的东西?
感谢评论,我找到了一个令人满意的方法:使用 supervisor.d 将重新启动一个 symfony 命令脚本:
set_time_limit(0)
- 无限循环
- 对 redis 的阻塞调用(
BRPOP
的最大方式为 1 秒。低于 read_write_timeout)- 执行阻塞命令很重要,以免消耗所有 CPU 时间
- 我会去一个真正的 pub/sub,但现在,我只有一个听众,所以没关系
我可以从早期的角度判断:
- supervisor.d真的很容易install/configure,文档很完整,我没运行任何问题,难得+满意!
- 好像还不错
- 写了日志,以后崩溃时更容易理解
- 如果连续X次崩溃,服务就停止了,我没有找到通知的方式,这真的是个问题,我想我会去this solution(doc )
- 就像@Mike Miller 说的:“唯一要记住的是你这样做是你需要在代码更改后重新启动,否则它会 运行 保留你的旧代码"