欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于SESSION的一点疑问

程序员文章站 2022-05-15 10:49:18
...
SESSION是放在服务器上的,服务器会给用户一个SESSIONID,用户靠着SESSIONID去访问,一次会话结束后SESSIONID就没有了。。用户自然就找不到原先的SESSION文件了。
------------------------------------------------------------------------------------------------------------------------------
那我现在有个问题。。像类似淘宝或者京东的购物车系统怎么用SESSION实现的?
1.因为如果用SESSION,关闭浏览器后数据就找不到了,第二次再看岂不是购物车就是空的?
2.如果用COOKIE保存在客户端那我换台电脑岂不是购物车也是空的?
3.如果放在数据库里那每个用户访问都是调用数据库查询那服务器压力岂不是太大了?
4.SESSION在服务器默认保存的时间是1440秒,如果我没理解错的话,这个时间没用啊,因为关闭浏览器你就找不到SESSION文件了,第二次也没办法调用,设置成5分钟岂不是更好?
--------------------------------------------------------------------------------------------------------------------------------
小弟初学PHP有可能对SESSION理解不是很正确,有点偏激,希望各位不吝赐教,多多指正!


回复讨论(解决方案)

1、2、3、都是用数据库的,把用户id设成索引很快,而且人家也不是一台服务器。照你这样说,每次登录,还要查数据库呢,压力也很大咯?!
4、你说的1440秒是用户停留在一个页面的时间,过了这个时间再到其他页面去,其他页面就没有session的信息了

没有网购过,不知道关闭浏览器后,购物车数据是否还存在
假定是存在的话,那么他就是保存在数据库里的,并以用户名作为唯一识别标志
为什么把数据放到数据库里就觉得服务器压力大了,而放在文件里就不那么感觉呢?
显然这是一个认知的误区,要知道表文件也是文件呀

session 的 1440秒,是指 session 的最短存留时间。即最后一次访问的 1440秒后才可以删除
为什么是 1440秒而不是更短,这是一个统计意义上的量。在操作过程中临时有事(抽烟、喝水、接电话...)一般不会超过 24 分钟,如果暂停 5 分钟就要重新登录,那不也太不友好了吗?

并不是全部session存储

需要走服务 后台用其他语言实现 有内存缓存 最终落地是在数据库