标签:tar 问题: 关系 自动保存 ESS 内存 问题 关闭 仓库
http是无状态的,如果需要在多个链接间共享数据,就要在服务器上一个可共享的全局位置,保存可在多个链接间反复使用的状态和数据。
PHP中,session是服务器内存中一个关联数组对象,
session允许将数据存储在web服务器上,从而在整个用户会话过程中保持任何数据。
用户会话是指用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间。
session只会在首次使用服务器端编程语言访问session时,才会创建。
一 session的生命周期
1.打开新浏览器窗口,首次请求服务器时,浏览器就与服务器建立了session,服务器自动给客户端分配一个唯一的标识(sessionid)被存储于客户端本地的cookie中。
注意:从当前浏览器窗口打开的新链接,不再建立新session,而是和第一个打开的窗口公用一个session。
2.当PHP中调用session_start()函数时,服务器会根据请求中携带的sessionId,从session仓库中加载已经存储的对应sessionId的session对象到内 存
3.当执行PHP脚本时,可用如下方式注册session变量
session_start(); $_SESSION["变量名"]=值; //同关联数组
4.当PHP脚本执行结束时,未被销毁的session变量会被临时自动保存到服务器本地的一个指定路径下的session库中暂存,本次浏览过程中,再次需要访问session中保存的数据时,还可以从session库中加载回内存中使用
这个路径可由php.ini文件中的session.save_path指定
5.只要页面有提交活动,则session的所有项都会保持
6.session失效:
页面在1440s,也就是24分钟后没有任何提交活动时,session会失效。session内存储的多个数据项是整体失效的。(如在php.ini默认配置session.gc_maxlifetime修改)
或者关闭浏览器窗口,sessionID自动注销,也会导致session失效
下次打开窗口,请求服务器时,重新建立新的session,分配新的sessionId。
7.会话时间段
一次会话时间段,是指一个特定的用户,访问一台特定的服务器,并且不间断操作所持续的时间。
两个用户同一时间段访问同一台服务器,是两个不同的sessionid
一个用户,关闭浏览器后再次访问同一台服务器,session时间段与关闭前的访问毫无关系
问题:如果客户端关闭浏览器,服务器端不会立刻释放session的,因为当浏览器关闭时,服务器端是不知道的。
所以:session实际存活时间,等于用户连续操作的时间+session过期时间。
标签:tar 问题: 关系 自动保存 ESS 内存 问题 关闭 仓库
原文地址:https://www.cnblogs.com/codexlx/p/12503313.html