多轮对话机器人框架 CommuneChatbot 使用 swoole 做通信引擎, 同时非常广泛地使用了容器和依赖注入. 在本项目中使用了 “双容器策略” 来解决 “请求隔离问题” .....
// 只有自己没有绑定, 且父容器有绑定的情况下, 才通过父类来做实例化....使用双容器技术, 反而某种意义上方便了排查内存泄露.
因为 CommuneChatbot 是基于依赖注入来启动, 运行的, 请求内生成的绝大多数对象都来自于 IoC 容器, 并为之持有....双容器策略在 CommuneChatbot 项目中的效果
CommuneChatbot 目前使用双容器, Demo 在微信公众号 CommuneChatbot 上运行...., 还带来了额外的性能提升:
由于大量使用 PHP 的反射特性来实现复杂的依赖注入, 所以反射本应该是性能开销的大头.