我在登录时,使用Gateway::bindUid($client_id, $pc_user_id);绑定了登录用户信息
然后,在其它要用的地方时,我先使用Gateway::isUidOnline($pc_user_id)判断是否在线,有在线再处理业务发送信息。
但是在使用中,发现会有极小的概率出现Gateway::isUidOnline返回false值,不在线。有时又可以了。很奇怪。
请教下大概会是什么原因呢?
如何避免出现这样的问题呢?
这是绑定的
$pc_user_id=$admin_id.'||wx||'.$user_id;
Gateway::bindUid($client_id, $pc_user_id);//更新pcid值
Gateway::leaveGroup($client_id,'NoDistributionGroup');//从未分配组去掉
Gateway::leaveGroup($client_id,'NoWeChatGroup');//从未登录组去掉
这是调用的
$pc_user_id=$admin_id.'||wx||'.$user_id;
if(Gateway::isUidOnline($pc_user_id)){
print_r('在线');
//在线处理业务相关
}else{
//不在线,出现异常
}
workerman4.0.19+GatewayWorker
有没有可能就是没在线
有可能连接断开了,也有可能是业务逻辑问题,例如有一定几率未执行到binduid。
记录下日志自己排查下吧,onConnect、onClose、bindUid时都记录下日志,日志里把client_id带上。
根据你目前提供的这些信息无法定位到具体问题。