$connection加了个user,user是个array(),在$worker->onClose时候会内存泄露吗?

qq5738912

如题。我的业务逻辑大概是在某次$worker->onMessage = function($connection, $data) {}的时候,$connection->user = array("张三", "33岁", "工程师")。最后,$worker->onClose了,$connection就被销毁了,那么这个user呢?
我的代码内存泄露问题找了好久了。大家帮帮忙看看

1875 2 0
2个回答

walkor

onClose的时候,workerman会自动移除$connection的引用,正常情况下$connection的引用为0,根据php的回收机制$connection会自动释放,$connection上的属性也会自动释放,包括后面添加的$connection->user属性。
 
不过如果业务将$connection保存了起来,例如保存到了一个全局数组里,那么onClose后$connection的引用计数不会为0,则$connection不会释放,除非业务将保存的$connection删除。

  • 暂无评论
qq5738912

多谢大佬的指引,我也是觉得正常情况下,user是随着父亲conneciton一起被回收的了。估计问题真的存在于你的第2段话那里,我再研究研究

  • 暂无评论
年代过于久远,无法发表回答
🔝