PHP:设置 session 会话过期时间

php 的 session 会话默认是关闭浏览器就失效了,同时如果不操作网页那么 >24 分钟后也会失效(24分钟后时间随机,后文有提)。
如果想设置 session 过期时间可以参考以下方式。

设置 PHP 的 session 过期时间

打开 php.ini 配置文件,修改如下三个配置:

1、session.use_cookies

把这个的值设置为1,利用 cookie 来传递 sessionid

2、session.cookie_lifetime

这个代表 SessionID 在客户端 Cookie 储存的时间(秒),默认是0,代表浏览器一关闭 SessionID 就作废! 那么我们把它设置为自定义如:864001 天

3、session.gc_maxlifetime

这个是 Session 数据在服务器端储存的时间,如果超过这个时间,那么 Session 数据就自动删除!也可以设置为 86400 即 1 天。

注意:

  • 到了设置的时间后 gc 并不一定会工作,因为 gc 的启动是有一个概率的。
  • 概率 = session.gc_probaility / session.gc_divisor,默认为 1/100,所以每 100 个请求过来才会有 1 次触发 gc 去工作。

扩展知识

session.save_path

  • session 文件保存路径,Linux 默认 /var/lib/php/sessions,Windows 需要配置并创建对应目录,例如:D:/php/php7.4/tmp

  • 此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 ‘5;/tmp’ 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If

  • 要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh,windows 版本是 mod_files.bat 可以用来做这件事。

  • 此外注意如果使用了 N 参数并且大于 0,那么将不会执行自动垃圾回收。

  • 另外如果用了 N 参数,要确保将 session.save_path 的值用双引号括起来,因为分隔符分号;php.ini 中也是注释符号。

参考文档

https://www.php.net/manual/zh/session.configuration.php
https://weiku.co/article/620/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值