前言
现代Web开发中无不涉及session,理论上只要是C/S体系结构的软件系统均需要一种称作session(或类似session概念)的东西,来存储客户端与服务器端交互过程中的状态信息。因此,掌握session的相关知识对于学习web开发十分重要。
Session是一个很通用的名称,它独立于网络协议和编程语言。但是为方便讨论它则必须依附于一个具体而通用的背景环境,如LAMP。
- 本文所讨论的session均指HTTP session,即HTTP协议相关的session(HTTP Client <-> HTTP Server),且HTTP Server中采用Apache举例说明。
- 本文在描述概念或列举例子使用的是PHP代码,所以阅读本文需要一点PHP语言的基本知识,好在概念和原理都是想通的,文中的例子力求做到见名知意。
了解、熟悉、掌握一门技术,离不开以下几个问题:
- What:它是什么?
- How:怎么用它?
- Why:为什么它是这个样子?
这几个问题基本构成了本文的组织结构
- 第一章介绍cookie和session的基本概念,cookie与session密不可分,所以在介绍session之前,有必要讨论下cookie相关的概念与技术。
- 第二章介绍session的基本原理与使用,一门新技术的出现、发展必然是满足了人们某种需求。学以致用是学习知识的关键所在。
- 第三章剖析session的实现原理,在第二章的基础上探入PHP内核源码(PHP-7.1),剖析session实现原理。知其然亦知其所以然。