zoukankan      html  css  js  c++  java
  • session(1)

    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过期时间。

      

  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/codexlx/p/12503313.html
Copyright © 2011-2022 走看看