PHP关于Session的设置与销毁

  1. 先阐明本人关于session的基本配置
    使用浏览器cookie进行session的传递,在php.ini文件中设置:session.use_cookies = 1**

  2. session和cookie的交互
    在PHP服务端启用session_statrt后,浏览器运行该脚本时会自动产生名为‘PHPSESSID’的一个cookie,这个cookie的值和存放在服务端的session文件名字一致,当浏览器向服务端发起请求时,便会将cookie值传递给服务端,服务端识别这个cookie后,便可将客户端信息保存到session中
    在这里插入图片描述
    在这里插入图片描述

  3. 关于session的相关参数设置
    1:PHP的session的回收机制(GC—garbage collect)
    当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下,
    session.gc_probability = 1
    session.gc_divisor = 1000
    两者关系:gc_probability /gc_divisor 的值是GC的触发几率也就是说,当客户端产生1000次请求时,才会触发1次GC。
    2:session.gc_maxlifetime:PHP设置session的过期时间,默认1440(秒),当触发GC时,PHP会计算session文件的最后修改时间,如果超过默认gc_maxlifetime设置时间,则会被删除。
    3:session.cookie_lifetime:PHP设置含有session信息的cookie在浏览器的过期时间,默认0,即浏览器关闭该cookie才会消失,也就意味着服务端session失效。

  4. 销毁session方式
    客户端销毁:单独设置cookie_lifetime,eg:cookie_lifetime = 30,则30秒后该cookie失效,此情况下即意味着服务器会重新生成一个session,这样原来的session信息在客户端就已经消失,虽然在服务端仍然能看到,但是客户端已没有原来的session信息
    方服务端销毁:设置gc_maxlifetime:session信息保存一个文件中,如果该文件的最后修改时间加上过期时间仍然小于当前时间,则该session文件会被删除;但是常常发现session文件没有被删除,原因在于GC的触发机制,默认0.1%,也就是你反复请求1000次,才会触发一次删除过期session文件,当你修改gc_probability或者gc_divisor的值时,如gc_divisor=0,则一定会触发,但是每次浏览器请求都触发GC时,会造成服务器性能下降
    这是session的基本配置,对于单独网站的个性化配置与生效我会在另一篇文章介绍

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值