同一个对象居然在onClose里成员变量值和其他地方不一样

Ndz

问题描述

同一个对象值不一样,看图片上红色的部分

程序代码或配置

print_r($_SESSION['UserInfo']->GetSaveArray());这是在OnMessage里的
$Array=$_SESSION['UserInfo']->GetSaveArray();
           print_r($Array);这是Onclse里的帮我看下这是为啥

重现问题的步骤

这里写步骤

202 2 0
2个回答

Ndz

找到办法了,那就是第一 类里不要写构造函数和析构函数第二,用updatesession这个函数来更新gateway进程存的session,哈哈全搞定了

  • 暂无评论
Ndz

不要$_SESSION赋值与Gateway::updateSession同时操作同一个$client_id,可能会造成session值与预期效果不符

手册里的这个好像说的有矛盾,因为你只在BusinessWorker进程里修改了当前会话值,这个值是没法自动更新到gatewayworker里的,只有当给客户端发消息的时候才能更新,那么这时候客户端断网了,然后又心跳触发onclose了,
这时要在onclose里使用session,那么其实最后一次修改会话就是无效的了,不知道是不是这样

  • 暂无评论
🔝