深入了解session

session

  • 为了解决在多个请求的页面之间的关联,让多个页面都能读取到某个信息,存在于服务端

运行机制:
  • 首先如果通过session.start()开启session后,此时会自动生成session_id,用来标识此次是哪个用户在访问

  • 同时会自动向cookie中写入一个名为PHPSESSID的变量,值为session_id,若此次会话没有结束,再次访问时,服务器会读取这个PHPSESSIDcookie是否过期是否有值,如果有则使用;没有会重新生成一个session_id,然后再生成PHPSESSID这个cookie

  • 存储数据:会以sess_前缀 + session_id的形式存在服务器的临时目录中,每生成一个session_id就会新生成一个文件

  • 写入数据:序列化写入,当读取session变量时,先会读取cookie中的PHPSESSID,获取session_id,然后根据这个查找文件获取对应的数据

  • SID是一个系统常量,包含着会话名以及会话ID的常量,如果会话ID已经在cookie中存在的则SID为空

session的配置

session.save_handler = files:表示session的存储方式,默认为文件方式

session.save_path:保存路径

session.use_cookies:默认值为1,表示会在浏览器创建cookie.。。,

session.name = PHPSESSID:设置cookie中保存session_id的属性名

session.auto_start = 0:设置是否默认开启session,默认不开启

session.cookie_lifetime = 0:设置cookie过期时间

垃圾回收机制:
  • 代码处理

  • 使用session配置:

    session.gc_probability /session.gc_divisor
    //会话初始时启动gc(garbage collection)的概率,session.gc_divisor默认为100

    session.gc_maxlifetime // 当超过设置时间未调用,就会被认为是垃圾文件
posted @ 2020-04-10 14:30  ashen1999  阅读(141)  评论(0编辑  收藏  举报