Redis pub/sub 在 php 中是否现实?

is redis pub/sub realistic in php?

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

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

  1. 不要使用 pub/sub,使用其他 redis 的存储,每 x 分钟 php 启动一个 crontask
  2. 使用会调用 php?
  3. 的经纪人
  4. 其他?

用“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 说的:“唯一要记住的是你这样做是你需要在代码更改后重新启动,否则它会 运行 保留你的旧代码"