session原理和过期时间
2021年二月二龙抬头祝福语>商务英语的就业前景站在服务器的⾓度来说,session是为了区分⼀个个的浏览器.需要浏览器的cookie配合.
拿web页⾯⽤户登陆时的情况举例.
1.⽤户 提供账号密码,发送到 服务器.
2.服务器接收账号密码,与数据库进⾏匹配,匹配成功则证明是合法⽤户.
3.服务器⽣成⼀个SESSION⽂件,并在⾥边写⼊⼀些内容,
session⽂件命名通常是sess_随机字符串,如下是服务端的session⽂件:
图⽚.png
4.服务器把随机字符串返回给浏览器,⼀般存在浏览器的cookie中.
如下图:
图⽚.png
巳时是几点到几点5.浏览器下次请求会带上cookie中的PHPSESSID(也就是上边那个字符串),服务器根据提交过来的字符串去寻对应的session⽂件.能到就说明这个浏览器是登陆过的,不到就跳转到登陆页⾯.
如果浏览器把cookie清空了,那服务器根本不知道去哪个⽂件,所以只能跳到登陆页⾯让你重新登陆.
这就⼜产⽣了新的问题.
电视剧婚变服务器上⼤量的SESSION⽂件如何处理
每个⽤户访问,都会在服务器⽣成⼀个SESSION⽂件,⽤户量⼤的时候会有好多好多个⽂件,当⽤户关闭浏览器或者SESSION到期失效后,这些过期的⽂件该怎么办呢?
政治面貌分类PHP的处理⽅式是,定义⼀个过期回收机制 ,⽤来清理这些过期的SESSION⽂件.暂且把这个回收机制称为清理事件.
关于配置,在php.ini中,主要有这⼏个参数:
<_probability -触发清理事件的分⼦(默认1)
<_divisor -触发清理事件的分母(默认1000)
默认配置的参数是:分⼦/分母 = 1/1000时.表⽰,每次访问会有千分之⼀的概率触发清理事件.系统会扫描所有的SESSION⽂件,过期的删除,未过期的忽略.
鼠标右键设置如果改成1/1则每次请求都会触发清理事件,但是这样做很明显会消耗更多的服务器资源.不建议.
那什么样的⽂件算是过期呢?
在php.ini⾥还有⼀个参数_maxlifetime默认是1440秒(24分钟),也就是说⼀个SESSION⽂件,超过24分钟没有被读写,则认为过期,清理事件触发时则会删除这个⽂件.
但有⼀种可能是SESSION⽂件已经超过24分钟,此时清理事件还没有被触发,那么这个⽂件虽然过期了,但是仍然可以正常访问,这就是为什么我们在程序⾥设置expire没有效果的原因.
其他的以后在补充吧.有说错的地⽅欢迎指正.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论