GatewayWorker session丢失问题

danielzhao

GatewayWorker session数据总是会丢失,可能在异步消息的处理上有些问题。

阅读 3215
3个回答

walkor

GatewayWorker的session不会丢失。但是因为session是异步存储到gateway的,如果某个客户端快速发送请求AB的话,A请求设置的session还没有成功写入gateway,这时候就处理B请求,那么A设置的session可能会读取不到。这种情况可以用Gateway::getSession来解决。

你看下你的场景是不是这个问题。

  • 暂无评论
danielzhao

谢谢您的回答,应该就是这个问题.您的意思是,使用session时,用getSession获取最新数据,如果有更改,就立刻使用updateSession对session进行更新?其实我觉得系统如果禁止使用$_SESSION更好一点,直接使用session函数来操作,安全可靠。
我这边准备使用memcache做session处理,这样会不会更好一点呢。

  • 暂无评论
walkor

不用UpdateSession。
使用session前执行

$_SESSION = Gateway::getSession($client_id);

  • danielzhao 2016-09-18

    session的更新是在请求结束后比对是否发生改变,如果不update的话,应该还会出现写入读取脏数据的情况吧。

  • walkor 2016-09-18

    不会