在我们开发的时候经常会用来使用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");
执行结果:
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的工作原理的详细介绍,了解更多相关文章请关注吾爱编程网!