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