扫码一下
查看教程更方便
在 PHP 中,Session 是一种服务器端的机制,服务器使用一种散列表的结构(类似于 JSON)来保存信息。相比于保存在客户端的 Cookie,Session 将用户交互信息保存在了服务器端,使得同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只需要传回一个 ID 即可,这个 ID 是客户端第一次访问服务器的时候生成的,而且是唯一的。
还有一点就是,因为 Cookie 存储在客户端,所以用户有权禁用 Cookie,而 Session 是存储在服务器端的,用户无法禁用。
我们可以使用 PHP 脚本创建和存储 Session 中的数据。在创建一个 Session 后,所有 Session 变量在用户一次会话期间里访问的所有页面都有效。其工作机制如下图所示。
Session 默认会以文本的形式存储在服务器的临时目录中,文件名以“sess_”作为前缀,后面加上“Session ID”,例如“sess_t5is1r7ct740dn390kuv3mpcse”。
我们可以在 php.ini 中找到 Session 的相关配置,下面是一些常用的配置信息:
session.save_handler = files #session 的存储方式,默认是文件,还可以是 redis 或者是 memcache
session.save_path = "d:/wamp/tmp" #session 文件的存储目录
session.use_cookies = 1 #是否使用 cookie 存储 session_id
session.name = PHPSESSID #客户端存储 session_id 的会话名
session.auto_start = 0 #是否自动开启 session
session.cookie_lifetime = 0 #设置客户端中存储的 session_id 的过期时间,以秒为单位
session.use_only_cookies=0 #是否只使用 cookie 来处理 session_id
session.gc_divisor = 1000 #进程比率
session.gc_probability = 1 #垃圾回收的处理几率
session.gc_maxlifetime = 1440 #设置 session 文件的过期时间
Session 在以下情况会被删除,也就是失效: