GatewayWorker session数据总是会丢失,可能在异步消息的处理上有些问题。
GatewayWorker的session不会丢失。但是因为session是异步存储到gateway的,如果某个客户端快速发送请求AB的话,A请求设置的session还没有成功写入gateway,这时候就处理B请求,那么A设置的session可能会读取不到。这种情况可以用Gateway::getSession来解决。
你看下你的场景是不是这个问题。
谢谢您的回答,应该就是这个问题.您的意思是,使用session时,用getSession获取最新数据,如果有更改,就立刻使用updateSession对session进行更新?其实我觉得系统如果禁止使用$_SESSION更好一点,直接使用session函数来操作,安全可靠。 我这边准备使用memcache做session处理,这样会不会更好一点呢。
不用UpdateSession。 使用session前执行
$_SESSION = Gateway::getSession($client_id);
session的更新是在请求结束后比对是否发生改变,如果不update的话,应该还会出现写入读取脏数据的情况吧。
不会
GatewayWorker的session不会丢失。但是因为session是异步存储到gateway的,如果某个客户端快速发送请求AB的话,A请求设置的session还没有成功写入gateway,这时候就处理B请求,那么A设置的session可能会读取不到。这种情况可以用Gateway::getSession来解决。
你看下你的场景是不是这个问题。
谢谢您的回答,应该就是这个问题.您的意思是,使用session时,用getSession获取最新数据,如果有更改,就立刻使用updateSession对session进行更新?其实我觉得系统如果禁止使用$_SESSION更好一点,直接使用session函数来操作,安全可靠。
我这边准备使用memcache做session处理,这样会不会更好一点呢。
不用UpdateSession。
使用session前执行
$_SESSION = Gateway::getSession($client_id);
session的更新是在请求结束后比对是否发生改变,如果不update的话,应该还会出现写入读取脏数据的情况吧。
不会