如题。我的业务逻辑大概是在某次$worker->onMessage = function($connection, $data) {}的时候,$connection->user = array("张三", "33岁", "工程师")。最后,$worker->onClose了,$connection就被销毁了,那么这个user呢? 我的代码内存泄露问题找了好久了。大家帮帮忙看看
onClose的时候,workerman会自动移除$connection的引用,正常情况下$connection的引用为0,根据php的回收机制$connection会自动释放,$connection上的属性也会自动释放,包括后面添加的$connection->user属性。 不过如果业务将$connection保存了起来,例如保存到了一个全局数组里,那么onClose后$connection的引用计数不会为0,则$connection不会释放,除非业务将保存的$connection删除。
多谢大佬的指引,我也是觉得正常情况下,user是随着父亲conneciton一起被回收的了。估计问题真的存在于你的第2段话那里,我再研究研究
onClose的时候,workerman会自动移除$connection的引用,正常情况下$connection的引用为0,根据php的回收机制$connection会自动释放,$connection上的属性也会自动释放,包括后面添加的$connection->user属性。
不过如果业务将$connection保存了起来,例如保存到了一个全局数组里,那么onClose后$connection的引用计数不会为0,则$connection不会释放,除非业务将保存的$connection删除。
多谢大佬的指引,我也是觉得正常情况下,user是随着父亲conneciton一起被回收的了。估计问题真的存在于你的第2段话那里,我再研究研究