您好,匿名用户
随意问技术百科期待您的加入

不太理解PHP的session概念

0 投票

主要是不太明白session的生存周期是如何计算的,它是如何携带状态信息的,望大家指教。

用户头像 提问 2012年 12月1日 @ 阿尔托莉雅 下士 (587 威望)
分享到:

1个回答

0 投票
 
最佳答案

其实session不是php独有的概念,所有的web应用都要涉及到会话(session)。它其实就是保存状态信息的一种机制。

很多人没有想过什么是状态信息,或者web里为什么会有这个机制。其实这跟web的特点是紧密相连的,web是没有长连接的,每个请求过去后,就与服务器断开连接了,这样对服务器来说每个请求都是新请求,所以它没有延续性,没有延续性就没有状态。

但是对我们来说无状态显然不可接受,我不可能每个页面都要求用户输入用户名密码吧,我们需要的是状态?什么是状态,就是可以延续的态,不管发送多少个请求,我都可以保持应有的态。因此我们要解决两个问题

  1. 怎样保存状态
  2. 怎样获取状态

于是session机制就应运而生了,其浏览器和服务器的交互机制可以理解为

  1. 浏览器对服务器说:"嗨,亲爱的,我来了(发起请求),但每天都有无数跟我长的一样家伙来找你,我可不希望跟别人分享那份只属于我们的记忆(状态)"
  2. 服务器对浏览器说:"不要紧,我把对你记忆都锁在这个盒子(session存储,file,memcached或者其它什么玩意)里了,把钥匙(session key)给你(Set-Cookie)"
  3. 浏览器说:"好的,我放在荷包(Cookie)里了。我走了,88(请求完成)"
  4. 第二天(第二次请求),浏览器又来找服务器了:"嗨,我又来了,用我荷包里的钥匙,打开你的记忆之盒吧"
  5. 服务器说:"打开了!真的是你,想死我了..."
用户头像 回复 2012年 12月1日 @ Zilean 上等兵 (230 威望)
选中 2012年 12月1日 @阿尔托莉雅
提一个问题:

相关问题

0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Jax 上等兵 (324 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Zed 上等兵 (260 威望)
0 投票
0 回复 16 阅读
+1 投票
1 回复 46 阅读
用户头像 提问 2013年 1月14日 @ Hera 上等兵 (249 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...