public static OnConnect($client_id)
{
$app = new App($client_id, $ip);
$_SESSION = $app;
}
會(huì)發(fā)現(xiàn)App的destruct函數(shù)被調(diào)用了,也就是說$_SESSION = $app;的時(shí)候,對象銷毀了一次。
請問這是怎么回事。
謝謝
GatewayWorker手冊中有講解session,包括原理。
http://wtbis.cn/gatewaydoc/gateway-worker-development/session.html
Gateway/Worker模型中,每個(gè)客戶端的session數(shù)據(jù)是存儲(chǔ)在Gateway進(jìn)程內(nèi)存中的,每次Gateway進(jìn)程轉(zhuǎn)發(fā)消息給BusibuessWorker進(jìn)程時(shí),都會(huì)順便攜帶上對應(yīng)客戶端的session數(shù)據(jù)給BusibuessWorker進(jìn)程,這時(shí)BusibuessWorker進(jìn)程把session數(shù)據(jù)賦值給$_SESSION變量,Event.php中就能使用$_SESSION了。因?yàn)橛袀€(gè)賦值覆蓋的過程,所以之前$_SESSION保存的App對象被覆蓋了,App對象沒有任何引用了,就被回收了,所以就調(diào)用了析構(gòu)函數(shù)。