session工作原理、存储目录、垃圾回收、存储优化等研究

一、Session工作原理

    http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议,服务器响应完之后就失去了与浏览器的联系。所谓无状态,指的是不会维护http请求数据,http请求是独立的,不持久的。而越来越复杂的WEB应用,需要保存一些用户状态信息。这时候,Session这种方案应需而生。PHP从4.1开始支持Session管理。

    session的工作原理:用户在客户端登陆网站时,被访问的PHP页面使用session_start()函数启动session,产生客户端唯一标识session_id(使用函数session_id()设置),当请求下一个页面时,PHP程序通过两种方式来获取客户端的session_id:一种是将session_id自动加入到GET或POST的URL中,默认情况下,变量名为PHPSESSD(在php.ini中的设置session name=PHPSESSD);另一种方式是通过cookie,将session_id 保存在cookie中,如下图所示的红色框,客户端的PHPSESSID的值与服务端的sess_后缀的值是相等的。由此可以看出,服务端产生客户端唯一标志的sessionid。

 

客户端:

服务端:



      保存在服务器端的session数据,不是保存在服务器端的内存中,而是保存在文件或数据库中。默认情况下配置服务器端的php设置(php.ini),通过文件的方式保存(session save_hander=files),使用读写文件的方式保存session数据,session文件保存的目录由session save_path指定,如:文件名为 sess_c72665af28a8b14c0fc61afeb59b51b,文件中的数据即是序列化之后的session数据,如果访问量大,还可能产生多个session文件,这时可以设置分级目录保存session文件

session save_path="N;/save_path"(N为分级的级数,save_path为开始目录)。对session数据写入时,PHP获得客户端的session d,然后跟随session d到指定的session文件保存目录中找到相应的session文件,不存在则创建,最后将数据序列化之后写入文件。读取session数据是类似的流程,对读出来的数据需要进行解序列化,生成相应的session变量

      用户在浏览网页时&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值