不太理解PHP的session概念
迷茫
迷茫 2017-04-10 14:21:37
[PHP讨论组]

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
巴扎黑

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

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

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

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

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

  1. 浏览器对服务器说:"嗨,亲爱的,我来了(发起请求),但每天都有无数跟我长的一样家伙来找你,我可不希望跟别人分享那份只属于我们的记忆(状态)"
  2. 服务器对浏览器说:"不要紧,我把对你记忆都锁在这个盒子(session存储,file,memcached或者其它什么玩意)里了,把钥匙(session key)给你(Set-Cookie)"
  3. 浏览器说:"好的,我放在荷包(Cookie)里了。我走了,88(请求完成)"
  4. 第二天(第二次请求),浏览器又来找服务器了:"嗨,我又来了,用我荷包里的钥匙,打开你的记忆之盒吧"
  5. 服务器说:"打开了!真的是你,想死我了..."
天蓬老师

70 回答的好幽默,好形象。(然后一不小心写错地方了。)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号