php session原理,Session原理

在我们开发的时候经常会用来使用session来区分不同的用户浏览,至于Session的原理,我们可能只了解了部分,接下来吾爱编程为大家详细的介绍一下Session的原理,有需要的小伙伴可以参考一下:

1、简介:

Session字面含义就是会话。由于HTTP是无状态协议,为了保持浏览器与服务器之间的联系,才有了Session。Session就是用于在服务器端保存用户状态的协议。通常用来保存用户的登录状态。

2、Session原理:

我们在搭建网站服务器的时候,通常会启用服务器的Session,这个时候当我们访问一个服务器上面的网站,服务器就要为该用户创建一个SESSION,在创建这个SESSION的时候,服务器会先查询这个用户是否创建过对应的Session ID,如果没有就创建,反之不创建。这个SESSION

ID是唯一的、不重复的、不容易找到规律的字符串。SessionID通常以Cookie的形式存储在客户端。每次HTTP请求,SessionId都会随着Cookie被传递到服务器端,这样我们就可以通过这个SessionId取到对应的信息,来判断这个请求来自于哪个客户端/用户。

3、实现方式:

(1)、cookie存储:

我们在浏览器使用cookie存储SessionID的时候,都会写上存储周期,因为cookie有定时和临时的区分,临时就是指关闭浏览器对应的cookie就会被删除,所以我们通常都会给需要存储信息的指定cookie添加一个过期的时间。有时候用户会禁用浏览器的cookie功能,这个时候我们就要依赖于第二种方式了。

(2)、URL重写:

在用户禁用了浏览器的cookie的时候,我们使用url重写的方法,把对应的sessionID附加网址之后,这样在访问下一个页面的时候,我们也可以获取到对应的SessionID。https://www.itbiancheng.com/sess.php?Session=q78sb9c7539nt9jho7lnplr951

4、PHP查看实例ID:session_start();

$sid = session_id();

print("Session ID : ".$sid."\n");

执行结果:

e6e01b8b86ad4a52db91e153ae87abb9.png

5、session回收机制:

PHP采用Garbage Collection process对过期session进行回收,然而并不是每次session建立时,都能够唤起

‘garbage collection’ process

,gc是按照一定概率启动的。这主要是出于对服务器性能方面的考虑,每个session都触发gc,浏览量大的话,服务器吃不消,然而按照一定概率开启

gc,当流览量大的时候,session过期机制能够正常运行,而且服务器效率得到节省。

6、PHP相关参数调整(php.ini):session.gc_probability = 1

session.gc_divisor = 1000

session.gc_maxlifetime = 1440 //单位秒

以上就是吾爱编程为大家介绍的关于session的工作原理的详细介绍,了解更多相关文章请关注吾爱编程网!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JSP 中,session 是用于在服务器端存储用户信息的一种机制,它可以在多个请求之间共享数据。session 是通过 HttpSession 接口实现的,它的工作原理如下: 1. 当用户第一次访问某个 JSP 页面时,服务器会为该用户创建一个 session 对象,并将该 session 对象的 ID 存储在一个名为 JSESSIONID 的 cookie 中,然后将该 cookie 发送给客户端。 2. 当用户发送其他请求时,客户端会自动将 JSESSIONID 的 cookie 发送给服务器,服务器会通过该 ID 来查找对应的 session 对象。 3. 当用户关闭浏览器或者 session 超时时,session 对象会被销毁,其中存储的用户信息也会被清除。 在 JSP 中,我们可以通过内置对象 session 来访问 session 对象,例如 session.getAttribute() 可以获取 session 中存储的属性值,session.setAttribute() 可以向 session 中存储属性值。session 对象是一个 Map 集合,可以存储任何类型的数据,例如基本数据类型、对象、集合等。需要注意的是,session 对象的属性值必须是可序列化的,否则会抛出 NotSerializableException 异常。 使用 session 可以方便地实现用户状态的管理,例如登录状态、购物车信息等。但是需要注意,如果 session 中存储的数据过多或者过于频繁地访问 session,会占用较多的服务器资源,降低服务器的性能。因此,在使用 session 时需要注意合理使用,避免滥用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值