PHP 会话机制

因http协议是无状态的,服务器会把客户端的请求的请求都当到独立的行为,无法区别客户端。

这就出现会话机制,session cookie,其应用比如:

 一个超市搞活动,满1000送100,但很少客户一次买1000,需要累积记录上次消费金额。

客户需要一张会员卡,记录个人信息,商家通过客户的会员卡编号找到客户信息。

cookie

设置 setCookie($name,$value,$expire,$path,$domain,$secure,$httponly);

获取 $_COOKIE

删除  setcookie('name','');   setcookie('name','value',time()-10000);

优缺点

存储在客户端,不占用服务器资源

存储在客户端,安全性较低,只能存储字符串,容量较小

session

需要先session_start()

设置 $_SESSION['name'] = value;

获取 $_SESSION['name']

删除 

unset($_SESSION['name'])

session_destory()  销除当前会话的所有数据

优缺点

存储在服务端,安全性相对较高,数据类型多,容量大

存储在服务端,用户较多时,占用容量空间资源

回收机制

php.ini中设置

session.gc_maxlifetime  = 1440 默认24分钟

session.gc_probability = 1

sesson.gc_divisor   =    100

每请求100次,删除一个已过期的session文件


禁用cookie后session是否可用问题

可心使用get传值的方式

前端可使用session_name() = session_id()  

SID ( string)
包含着会话名以及会话 ID 的常量,格式为"name=ID",或者如果会话 ID 已经在适当的会话 cookie 中设定时则为空字符串。 这和 session_id() 返回的是同一个 ID。


多服务session共享问题

把session存到数据库    redis

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值