通过辅助服务器中转session id 无法取得session值。
处理流程:client -> subServer(辅助服务器) -> mainServer(主服务器)
处理解释:client与mainServer之间已经产生一个session,client将session id传递给subServer,subServer通过rpc接口将 session id传递给mainServer,mainServer通过session id,取得session里的一些值,返回给subServer。现象:client与mainServer之间session正确产生
client将与mainServer之间session的session id正确传递给subServer
subServer正确传递session id给mainServer
mainServer正确收到session id问题: mainServer通过session_id($SID);session_start();,读出来的是空,无法读取session里的值。
补充:同样的代码,不通过subServer,正常取到session的值客户要求这样的处理流程,很无奈,请高手相助!!!
处理流程:client -> subServer(辅助服务器) -> mainServer(主服务器)
处理解释:client与mainServer之间已经产生一个session,client将session id传递给subServer,subServer通过rpc接口将 session id传递给mainServer,mainServer通过session id,取得session里的一些值,返回给subServer。现象:client与mainServer之间session正确产生
client将与mainServer之间session的session id正确传递给subServer
subServer正确传递session id给mainServer
mainServer正确收到session id问题: mainServer通过session_id($SID);session_start();,读出来的是空,无法读取session里的值。
补充:同样的代码,不通过subServer,正常取到session的值客户要求这样的处理流程,很无奈,请高手相助!!!
不过,LZ说的这样只能通过数据库了吧,正常情况是client--->server 这是没问题的,因为session本来就保存在server 里,如果你又用个中间server ,虽然把session_id传过去了,mainserver只接收到了id这个值,怎么能有session里的数据呢。除非你把数据也传过去!
mainserver虽然只拿到了session id,但是session的文件是保存在mainserver上的,钥匙和房间都有了,理论上我觉得应该能到房间拿到东西。
请各位集思广益一下。
http://school.itzcn.com/special-spid-30.html
上面讲解的比较详细,希望对楼主有所帮助。
既然你不用中转时可以取出,用了中转,原理其实是一样的,你可以将中转服务器看成中客户端先直接用中转服务器取session值,看能不能取出,如果能,传给 a
看来我一开始的做法就有问题。有什么方法可能使subserver传递一个session id 给mainserver,让mainserver通过session id传递回session的值给subserver。希望大家指点!!!
你可以通过 session_id() 得到当前的 session id
也可以通过 session_id('myid') 设置当前 session id 为你需要的值在你的情况下 subserver 到 mainserver 的 session id 的传递是你自己控制的
所以你需要在 mainserver 判断 session id 的来源
如果是直接从 client 来的,则按默认操作方式进行
如果是从 subserver 来的,则指定 session id