Session即回话,指一种持续性的、双向的连接。Session和Cookie在本质上没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。

Session的实现可以有多种,如URL重写、Cookie,通过在Cookie中存储sessionID实现Session传递。

PHP 的 Session 默认是通过文件的方式实现。

Session通过一个称为 PHPSESSID 的 Cookie 和服务器联系。Session 是通过 sessionID 判断客户端用户的,即Session 文件的名称。

一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 id. 这个 id 可以存储在用户端的一个 cookie 中,也可以通过 URL 进行传递. Session会话用来追踪每个用户的会话,使用服务器生成的SessionID进行标识,用以区分用户。Session默认以文件的形式存放在服务器的磁盘目录中,SessionID存放在服务器内存和客户机的Cookie里面。这样,当用户发出请求时,服务器将用户Cookie里面记录的SessionID和服务器磁盘中的SessionID进行比对,从而找到这个用户对应的Session文件进行操作。所以,如果客户机禁止Cookie的话,Session也不能使用。
 
session_start()开启会话,生成session_id,再用session_id()输出:
session_start();
$session_id = session_id();
$_SESSION['name'] = 1;
 
通过已生成的session_id,开启会话,从而获取session中存储的值:
session_id($session_id);
session_start();
print_r($_SESSION['name']);
 
当session过多,一般磁盘文件数超过2000时,读写这个目录就会很慢。
1、可以做session文件的目录分级配置
session.save_path = "N;MODE;/path" 
N:表示要设置的目录级别,
MODE:表示目录的权限属性,默认是600,
/path:表示session文件存放的根目录路径
session.save_path ="1;f:/wamp64/tmp"
表示在f:/wamp64/tmp目录下再生成1个子目录来保存session文件,注意PHP默认是不会自动创建文件夹的,需手工创建(脚本),目录名以0~9和a~z共36个可选单字组成,如,f:/wamp64/tmp/a,26位的session_id根据第1位的字符去找到对应目录存储
如果使用子目录来存储会话文件,那么垃圾回收机制没法自动发生,可使用脚本,
如,find /path/to/sessions -cmin +24 -type f | xargs rm 
 
session回收机制(被动回收):
参数:
session.cookie_lifetime=0, 设定session_id在客户端cookie中的有效期限,单位秒,0表示到关闭浏览器,默认为0;
session.gc_maxlifetime=1440,设定session文件有效时间,单位秒
默认配置,当用户关闭浏览器,浏览器cookie中PHPSESSID失效清除,但服务器的sess_xxx文件并不会立马删除,
而是通过 当前时间减去session文件修改时间是否大于 gc.max_lifetime 来判断是否过期,若为true,则垃圾回收程序会清除session文件目录下所有过期的session文件。
失去客户端session_id引用的服务器session文件,不能在访问就一定会过期被清除,反之,若没有失去引用,只要用户有一个动作,哪怕是刷新,都会更新session文件的修改时间(前提是session文件要有数据)。
'garbage collection' process is started on every session initialization
注意,启动垃圾回收程序是在session_start()函数调用时,有一定概率(session.gc_probability/session.gc_divisor)触发的。

session一二事的更多相关文章

  1. Hadoop 一二事(1) - 简单介绍与杂谈

    大数据大数据,身边很多朋友都在谈大数据,Big Data!!! 到底是什么,用来干嘛的,也很少有人说得出一二,那今天开始就简单说说这一二事吧 hadoop 的来源:是作者女儿的一个玩具 - 一只黄色的 ...

  2. nginx 一二事(1) - 简单图片服务器解决方案

    最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的 今天再这里简单讲一下上传图片以及图片服务器的大致理念 如果是个人项目或者企业小项目,仅仅只有十来号人使 ...

  3. nginx 与 tomcat 集群 一二事 (0) - 简单介绍

    最近看了nginx以及tomcat的集群,通俗的做一下简单总结吧 nginx 是一个http服务器,是由俄罗斯人发明的,目前主流的服务器,作为负载均衡服务器,性能非常好,最高支持5万个并发连接数,在淘 ...

  4. Spring 一二事(4) - 单例

    spring bean配置后再默认情况下是单例的,如果需要配置可以选择 prototype, request, session和global session 在配置spring mvc的action时 ...

  5. 用户登录之cookie信息安全一二事

    大家都知道用户登陆后,用户信息一般会选择保存在cookie里面,因为cookie是保存客户端, 并且cookie可以在客户端用浏览器自由更改,这样将会造成用户cookie存在伪造的危险,从而可能使伪造 ...

  6. mybatis 一二事(1) - 简单介绍

    mybatis呢是一个orm数据库框架,非常适合新人学,门槛相对较低 本人呢曾经是先做的hibernate,后接触的mybatis,接触mabatis前我比较抵触,为啥呢, 当时喜欢hibernate ...

  7. H5一二事

    先回顾一下WEB技术的几个阶段 Web 1.0 内容为主,主要流行HTML和CSS Web 2.0 动态网页,流行AJAX/JavaScript/DOM H5 时代,WEB开发回归富客户端 那么H5肯 ...

  8. RabbitMQ 一二事(5) - 通配符模式应用

    之前的路由模式是通过key相等来匹配 而通配符,顾名思义,符合条件,则进行消息匹配发送 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上. 符号“#”匹配一个或多个词,符号“*”匹配不多不少一个 ...

  9. RabbitMQ 一二事(4) - 路由模式介绍

    路由模式其实和订阅模式差不多,只不过交换机的类型不同而已 路由模式可以用下图来表示,比订阅模式多了一个key,举个栗子就是根据不同的人群来订阅公众号,来收取消息 根据不同的key来获取不同的消息 最简 ...

随机推荐

  1. Linux 双向 SSH 免密登录

    原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他所有 ...

  2. FJUT3568 中二病也要敲代码(线段树维护区间连续最值)题解

    题意:有一个环,有1~N编号,m次操作,将a位置的值改为b,问你这个环当前最小连续和多少(不能全取也不能不取) 思路:用线段树维护一个区间最值连续和.我们设出两个变量Lmin,Rmin,Mmin表示区 ...

  3. Connections in Galaxy War (逆向并查集)题解

    Connections in Galaxy War In order to strengthen the defense ability, many stars in galaxy allied to ...

  4. 论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)

    Diffusion-Convolutional Neural Networks (传播-卷积神经网络)2018-04-09 21:59:02 1. Abstract: 我们提出传播-卷积神经网络(DC ...

  5. SalGAN: Visual saliency prediction with generative adversarial networks

    SalGAN: Visual saliency prediction with generative adversarial networks 2017-03-17 摘要:本文引入了对抗网络的对抗训练 ...

  6. (转载)Rime输入法—鼠须管(Squirrel)词库添加及配置

    为什么用Rime 13年底的时候,日本爆出百度的日本版本输入法的问题,要求政府人员停用,没当回事,反正我没用,当然了,有关搜狗和用户隐私有关的问题就一直没有中断过,也没太在意.但,前几天McAfee爆 ...

  7. Kubernetes之总体了解

    Kubernetes:架构.基本概念.用于总体了解 Kubernetes系列之介绍篇:优势.用途 Kubernetes核心概念总结

  8. 授权oAuth

    使用Client Credentials Grant授权方式给客户端发放access token 只验证客户端(Client),不验证用户(Resource Owner),只要客户端通过验证就发acc ...

  9. 洛谷P1164 小A点菜 DP入门

    原题传输门>>https://www.luogu.org/problem/show?pid=1164<< 前几天开始联系DP的,一路水题做到这,发现这题套不了模板了QAQ 在大 ...

  10. vue.js精讲02

    2017-09-17 笔记及源码地址 : https://github.com/wll8/vue_note vue 中的事件深入. 事件: @click/mouseover…事件简写: @ 如 @cl ...