session字如其意,它的存在就是为了保持会话状态。PHP中的$_SESSION让我们很方便的使用它,但是如果PHP本身不提供这个功能,我们该如何实现呢?且听我慢慢忽悠。
session本身的实现原理其实很简单,几句话就可以说完
用户首次访问时生成唯一ID(其实就是PHP中的`session_id`)
根据session_id作为唯一标示,生成session_id为名称的文件(储存session内容,当然也可以存到redis或者mysql中)
通过cookie下发`session_id`到客户端
用户再次访问时会通过cookie将`session_id`带上
服务端通过`session_id`获取对应的session内容(文件、Cache、数据库)
代码实现
下面是我通过PHP实现的一个简单的session功能类,用来演示具体的实现过程,只实现了写和读功能(没有考虑会话有效期、并发等问题)。
使用方法如下:
是不是特别简单呢?使用每个功能的时候多想一下它是怎么实现的,很多时候能够让我们快速定位到问题的所在~
领取专属 10元无门槛券
私享最新 技术干货