4 回答

TA贡献1834条经验 获得超8个赞
可能是memcache的问题,你的memcache里数据丢失了,memcache分配的内存加大点试试?
分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items

TA贡献2019条经验 获得超9个赞
因为你有页面跳转,估计浏览器没来的及写入session,就被刷掉了,时有时无,是因为请求的响应的时间不一致,刷新前留给浏览器的时间不一样,打断点,阻塞了进程是可以看到,跳转之后,当前会话结束了,自然是没了。

TA贡献1821条经验 获得超6个赞
其实如果你了解了session的机制,你就知道如何定位问题了。
首先,session的存储
session默认是文件形式存储,php默认session有效事件是1440秒,也就是说如果一个session过了1440秒没有刷新,那么再次访问的时候这个session就过期了,php会自动清理过期的session文件。
如果你选择用memcache存储session,因为是基于内存,有可能是外部因素导致数据丢失或者被清理,建议先切换回文件存储试试还有没有问题。
其次,客户端的sessionId
默认情况下,当php设置了一个session后,会告诉浏览器,创建一个cookie用来保存sessionId,下次请求的时候php会从$_COOKIE['PHPSESSID']中拿到sessionId再去读取对应的session文件。那你就得检查这个sessionID的cookie有没有被意外清理。
总结起来就是要么是服务端session数据没了,要么是sessionId没了。
- 4 回答
- 0 关注
- 584 浏览
添加回答
举报