public static function onClose($client_id) {
if(array_key_exists('uid',$_SESSION)) {
// do something
}
}
环境: Workerman: 4.0.19, PHP :7.4.21,nginx: 1.20.1
大概逻辑如上述代码,有时会提示: array_key_exists() expects parameter 2 to be array, null given。
有大神碰到过这问题吗?
可能原因:
一般我们都是在onMessage里设置
$_SESSION
,但是有的客户端成功连接之后并未发送任何数据就关闭了连接,这就导致可能onClose回调里$_SESSION
为空,所以从这个角度看是正常的。解决方案:
非常感谢。刚才在帖里看到类似的解决办法。不过我这里在onConnect里就设置了$_SESSION['connectTime'],onClos里有时还是会出现没有$_SESSION变量的情况。
不知道是怎么回事
在onConnect里设置的话的应该不会发生这种问题的、检查下业务代码、写下session的日志跟踪下。