共计 506 个字符,预计需要花费 2 分钟才能阅读完成。
所需 php 扩展
https://github.com/alanxz/rab…
amqp 需要先安装 rabbitmq-c
swoole
redis
源码难度:
易于理解, 便于修改
主要使用知识点:
swooleprocess
swoole 定时器
信号通信
等
使用难度:
简单,易于嵌入框架
发现问题:
查看 github 仓库,该代码已经半年没有更新,新的 swoole 版本中,process 是无法在 swooletimer 中使用,因为 swooletimer 中会自动创建 coroutine,而 process 无法在协程中创建
解决方法:
- 在入口文件增加 (已测试)
swoole_async_set([
'enable_coroutine' => false
]);
- 修改 process 为协程(未测试)
稳定性:
源码中有一段注释:
// 黑科技:实践中发现有可能进不到业务代码,造成消息丢失,job 执行太快或者太慢 (业务出现异常),worker 进程都安全退出
自己测试中,开启了 3 个 redis 队列
https://www.showdoc.cc/server…
测试结果: 推送 3000 条数据
最小进程数符合预期
最大进程数符合预期
结果无丢失
执行效率
受限于 redis 队列以及 job 任务
正文完