如題。我的業(yè)務(wù)邏輯大概是在某次$worker->onMessage = function($connection, $data) {}的時(shí)候,$connection->user = array("張三", "33歲", "工程師")。最后,$worker->onClose了,$connection就被銷(xiāo)毀了,那么這個(gè)user呢?
我的代碼內(nèi)存泄露問(wèn)題找了好久了。大家?guī)蛶兔纯?/p>
onClose的時(shí)候,workerman會(huì)自動(dòng)移除$connection的引用,正常情況下$connection的引用為0,根據(jù)php的回收機(jī)制$connection會(huì)自動(dòng)釋放,$connection上的屬性也會(huì)自動(dòng)釋放,包括后面添加的$connection->user屬性。
?
不過(guò)如果業(yè)務(wù)將$connection保存了起來(lái),例如保存到了一個(gè)全局?jǐn)?shù)組里,那么onClose后$connection的引用計(jì)數(shù)不會(huì)為0,則$connection不會(huì)釋放,除非業(yè)務(wù)將保存的$connection刪除。
多謝大佬的指引,我也是覺(jué)得正常情況下,user是隨著父親conneciton一起被回收的了。估計(jì)問(wèn)題真的存在于你的第2段話那里,我再研究研究