session服务器共享这个问题和cookie的跨域类似,面试的时候也很爱聊这个问题。 以前在做服务器集群的时候会碰到这样的一样问题,就是用户一会访问是处于正常登录状态,一会访问又没有登录了。这个问题偶尔才会出现。跟踪代码下去才发现session没有取到相应的值,想想也是醉了:原来服务器session没有设置共享,session存在在本地文件目录,当用户访问另外一台服务器的时候自然就取不到session了。 解决方法也不难,通过共享的存储在进行服务器之间的共享。这里使用redis的进行session存储。可以通过php.ini配置文件进行调整,也可以在代码中通过ini_set进行调整 ini_set("session.save_handler", "redis"); ini_set("session.save_path", "tcp://127.0.0.1:6379”); 如果需要使用redis进行存储,需要session中的Registered save handlers支持redis php中session是否支持redis 当这样设置之后,session就会保存在redis中了,不同的集群服务器之间就可以通过该redis服务器进行共享了。 好吧,暂时就写到这里了,以后会发现新的坑会继续补充上来。 |
|