PHP的SESSION和SESSION的GC机制什么是Session?
会话是浏览器和服务器之间的交互式会话。当我们使用浏览器打开网页时,我们使用HTTP协议。学过计算机的人应该知道HTTP有五个特点:
支持客户机/服务器模式简单、快速、灵活、无连接、无状态和无状态。我们如何将它们联系起来?此处使用会话。并且会话存储在服务器中(默认在/tmp临时目录中),很好的解决了安全问题。php通过session_start()函数打开会话访问。生成唯一的session_id还会将一个名为PHPSESSION的变量和session_id的值写入Cookie。下一次浏览器再次发起请求时,它会自动将Cookie中的值带过来,通过这个PHPSESSION,我们的服务器可以识别出这是同一个浏览器发起的请求。
Session和Cookie的关系
Session存储在服务器,Cookies存储在客户端,也就是我们平时使用的浏览器。我们通常需要cookie中的值来识别会话。但是如果cookies被禁用,我们还能使用会话吗?其实我们也可以通过
在请求的url中使用session_id,在请求的头中使用session _ id。
php.ini中的关键配置
[Session]Session . se _ handler = files Session . se _ path = & # 34;/tmp & # 34;session . use _ cookies = 1 session . name = PHPSESSID session . auto _ start = 0 session . cookie _ lifetime = 0 session . serialize _ handler = PHP session . GC _ divisor = 1000 session . GC _ probability = 1 session . GC _ max lifetime = 1440
Session的垃圾回收
使用session_start()函数时会触发GC,但由于请求不同,一秒钟内可能会有n个这样的sessions _ start()。如果都触发GC,这个效率会不会太低?所以这个时候就加了一个概率= gc_probability/gc_divisor。我们通过调整值的大小来调整GC概率。触发GC后,我们的垃圾收集机制会删除过期的文件。
Session同步的问题
我们的业务量增加后,通常会以集群的方式部署我们的服务器,前端通过负载均衡来分发我们的请求。如果我们仍然以文件的形式保存我们的会话,我们会遇到有时登录有时不登录的问题,因为我们不能保证每个请求都会分发到同一个服务器上。这时候推荐使用redis来存储我们的会话,通过redis解决数据同步的问题。
更多
网站建设,跨端小程序开发,爬虫开发,app开发。
微信官方账号:杭州石宝玲网
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。