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. docker版本升级

    docker的版本变化: Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式. 企 ...

  2. C# winform combobox默认选中项方法

    https://blog.csdn.net/easyboot/article/details/68062196 可以使用 Combobox.SelectText = “默认选中文本”; 但是如果Com ...

  3. Chrome浏览器F12开发者工具的几个小技巧总结

    1.直接修改页面元素 选择页面上元素,右键“检查”,会打开开发者工具窗口,显示当前选择元素的源代码,可以双击进行修改.如果要修改的东西比较多,可以折叠元素并单击选择,再右键Edit as HTML修改 ...

  4. 微信发送红包示例(php)

    微信红包接口 微信红包是微信支付推出的一款基于微信客户端的免费服务应用,微信红包以微信支付 为核心安全保障,为广大用户提供安全,快捷的移劢支付服务. 请求URL 现金红包 https://api.mc ...

  5. communication

    Always consider the challenge as a chance. Basic principles: Know your audience. Know your purpose. ...

  6. python学习 day011打卡 迭代器

    本节的主要内容: 1.函数名的使用以及第一类对象 2.闭包 3.迭代器 一.函数名的运用. 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1.函数名的内存地址 def fun ...

  7. 极简 R 包建立方法--转载

    https://cosx.org/2013/11/building-r-packages-easily/ 最近想试一下捣腾一个 R 包出来,故参考了一些教程.现在看到的最好的就是谢益辉大大之前写过的开 ...

  8. _itemmod_stat

    制作几种基础模板,用模板快速生成装备 `comment` 备注 `entry`目标装备 entry `src_entry` 模板装备entry `stat_muilt` 属性倍率 `mindmg_mu ...

  9. 使用ajax无法跨源问题总结

    参考文章: 浏览器同源政策及其规避方法 跨域资源共享 CORS 详解 使用jQuery实现跨域提交表单数据 <form action="http://v.juhe.cn/weather ...

  10. Spring官网下载各版本jar包

    1:浏览器输入官网地址:http://spring.io/projects 2:点击如图树叶页面按钮.  3:点击如图小猫图片按钮.  4:查找downloading spring artifacts ...