Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。有关使用Session 对象的详细信息,请参阅“ASP应用程序”部分的“管理会话”。注意会话状态仅在支持cookie的浏览器中保留
Session机制的远程监控系统
为了满足实时远程监测系统的需求,服务器需要实时监测客户端的连接状态。为此利用ICE中间件的优点设计了一种基于面向对象ICE中间件自定义Session机制的解决方案
session的工作原理:
(1)当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。
解决方案
那什么是Session的解决方案呢?用户访问一个网站时往往需要浏览许多网页。Session的使用在不同的语言中的使用方法特点不尽相同。对于一个通过PHP构筑的网站来说,用户在访问的过程中需要执行许多的PHP脚本。然而由于HTTP协议自身的特点,用户每执行一个PHP脚本都需要和Web服务器重新建立连接。
又由于无状态记忆的特点,此次连接无法得到上次连接的状态。这样,用户在一个PHP脚本中对一个变量进行了赋值操作,而在另外一个PHP脚本中却无法得到这个变量的值。例如,用户在负责登录的PHP脚本中设置了$user="wind",却无法在另一个PHP脚本中通过调用$user来获得“wind”这个值。也就是说,在一次HTTP请求中,PHP无法将已经赋值的参数传递给下一次http请求的脚本。因此,每个PHP脚本中所定义的变量都是只在本次HTTP请求内有效,本次HTTP请求结束,PHP就会释放掉这些为这些变量分配的内存。
使用方法
Session 是 用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。
Session通常用于执行以下操作
存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览Web应用程序时需要的其它信息。
存储只需要在页面重新加载过程中或按功能分组的一组页之间保持其状态的对象。
持久性方法的限制
随着越来越多用户登录,Session所需要的服务器内存量也会不断增加。
访问Web应用程序的每个用户都生成一个单独的Session对象。每个Session对象的持续时间是用户访问的时间加上不活动的时间。
Session是会话跟踪的另一种实现手段;
Session是存储在服务器(应用服务器)上的对象,该对象由服务器创建并维护;
服务器为客户端与服务器的每一次会话过程都创建并维护一个Session对象;