•支持客户/做事器模式•大略快速•灵巧•无连接•无状态 那么无状态的一段连续的HTTP要求,我们怎么把他们关联起来呢?这里就用到了Session. 并且Session存储在做事端(默认放到/tmp临时目录下),很好地办理了安全的问题. php通过session_start()函数开启session访问,天生一个唯一的session_id同时也会 往Cookie中写入名称为PHPSESSION的值为session_id的变量.当下一次浏览器再次发起 要求的时候会自动带上Cookie中的值,通过这个PHPSESSION我们的做事端就能识别出这是 同一个浏览器发起的要求.
Session和Cookie的关系Session存储在做事端,Cookie存储在客户端也便是我们常日利用的浏览器.常日须要Cookie 中的值我们才能识别到Session. 但是如果禁用了Cookie我们还能不能用Session呢? 实在我们也可以通过
•要求的url中的带上session_id•要求的header中带上session_id 等办法来利用session.
php.ini中的关键配置
[Session] session.save_handler = files session.save_path = "/tmp" session.use_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.serialize_handler = php session.gc_divisor = 1000 session.gc_probability = 1 session.gc_maxlifetime = 1440
Session的垃圾回收在session_start()函数的时候触发GC,但是由于要求量的不同,在One Second可能有N个这样的session_start() 如果都触发了GC那么这个效率会不会太低了?以是这个时候加上了一个概率,这个概率= gc_probability/gc_divisor 我们通过调度数值的大小来调度这个GC概率.在触发GC后我们的垃圾回收机制就会删除过期的文件.
Session同步的问题在我们的业务量增大之后,常日会利用集群的办法来支配我们的做事器,前端通过负载均衡来分发我们的要求.如果还是 以文件的形式保存我们的session的话,就会碰着有时候是登录,有时候又不是登录状态的问题,由于我们不能担保每次 要求都会分发到同一台做事器.这个时候就推举利用redis来存储我们的session,通过redis来办理这个数据同步的问题.
更多网站培植、跨端小程序开拓、爬虫开拓、app开拓
公众号:杭州师薄零网络