redis pub/sub 在 php 中现实吗?

Bru*_*uno 5 php publish-subscribe messagebroker paas redis

我想在 PHP 中使用 redis pub/sub,但恐怕 PHP 不能成为唯一的工具:订阅者需要始终可调用,因为 php 不是为作为守护进程运行而构建的,我可以'不要相信它总是可靠地“开启”。

那么 PHP 世界的解决方案是什么?

  1. 不要使用 pub/sub,使用其他 Redis 存储并每 x 分钟启动 php 的 crontask
  2. 使用将调用 php 的代理?
  3. 其他?

同“2”。我的意思是:使用作为守护订阅者的nodejs /java/fooBar 服务器并回调php(使用http/cli 或其他)。

我找不到比“2”更好的主意了。,但它似乎同样无效......

你有什么意见?


编辑:您将如何使用像 platform.sh 这样的云平台来做到这一点,因为它没有机会拥有类似的supervisor.d?

Bru*_*uno 1

感谢这些评论,我找到了一种令人满意的方法:使用supervisor.d,它将重新启动 symfony 命令脚本:

  • set_time_limit(0)
  • 无限循环
  • 对 redis 的阻塞调用(BRPOP最大方式为 1 秒,低于 read_write_timeout)
    • 执行阻塞命令很重要,以免消耗所有 CPU 时间
    • 我会去一个真正的酒吧/订阅,但现在,我只有一个听众,所以没关系

从早期的角度来看,我可以看出:

  • Supervisor.d 确实很容易安装/配置,文档完整,我运行时没有遇到任何问题,这是非常罕见的+令人满意!
  • 看起来效果很好
  • 日志被写入,因此可能更容易理解未来的崩溃
  • 如果发生 X 次连续且接近崩溃的情况,服务就会停止,我没有找到通知此情况的方法,这确实是一个问题,我想我会转到这个解决方案doc
  • 就像 @Mike Miller 说的:“唯一要记住的是,你这样做是在代码更改后需要重新启动,否则它将继续运行你的旧代码