BusinessWorker::onGatewayMessage SESSION、setSession、updateSession逻辑问题

随风飘曳

截图
这一段代码 如果是正常的 $_SESSION 操作流程是对的;
问题1:
但假如其他用户通过 set/updatesession 操作,
就会进入第一个红线处,并且没有地方修正_sessionVersion参数。导致每次都会进第一个红线处调用getsession;

问题2:
当前用户如果通过 set/updatesession 操作,
也会进入第一个红线处,并且没有地方修正_sessionVersion参数。导致每次都会进第一个红线处调用getsession;
截图

截图
两个红线处代码改为以上是否更好?

在这之后我详细看了下 _sessionVersion参数,并未发现核心目的?所以这段代码是否可以改为
截图

1585 1 0
1个回答

walkor

这里的_sessionVersion目的是记录session是否被set/updatesession修改过,如果修改过,当前的session有过期的可能,就从gateway进程重新获取session保证session是最新的。

不过这里确实有个问题,某个特定条件下会导致session一直是调用getsession接口。主干已经修复。

  • 随风飘曳 2019-12-25

    $data['ext_data'] 传过来的不就是最新的吗?为啥还要getsession呢?

  • walkor 2019-12-25

    不一定最新的

年代过于久远,无法发表回答
🔝