请求结束时进行必要清理, 防止内存泄露
解决方案的代码在 https://github.com/thirdgerb/container 创建了一个 composer 包 commune/container...方案: 每次请求, 克隆一个新的 container
问题:
清洗策略:
定义类时就要考虑清洗逻辑, 可能要实现interface, 耦合较重
swoole 发展到协程后, 同时可能相应多个请求, 清晰策略失效了...'conversationProviders' => [
// 数据读写的组件, 用到了laravel DB 的redis 和 mysql
\Commune\Chatbot\Laravel...但在开发 Studio 时, 发现还是需要一个类似 Laravel 的全栈框架....就我发现, 最容易导致内存泄露的两种情况:
某个闭包在每次请求时生成一个闭包实例, 被每个容器持有
容器生成的某个服务是匿名类, 导致相互持有
简单来说, 就是定义闭包和匿名类时, 慎重考虑内存泄露的可能性就行