我们知道,Session是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。
访问网站的来客会被分配一个唯一的标识符,即所谓的会话 ID。它要么存放在客户端的 cookie,要么经由 URL 传递。
Session 的存储方式默认是以文件的形式存放在本地的一个硬盘目录中,所以当Session比较多时,磁盘读取文件会比较慢。还有一点就是对于大站点,它无法实现多台服务器会话的共享。
一个解决方案是用数据库来存取 Session ,就能在不同服务器之间共享 session 信息了。
实现代码下载
引擎 MyISAM 最好替换成 MEMORY 引擎,因为 MEMORY 采用内存表,所有数据存储在内存,操作速度快,对于 Session 这种形式的数据正好适用。
在大流量的网站中,session 入库存在效率不高、占据数据库 connection 资源等问题。针对这种情况,可以使用 Memcached、Redis 等 Key-Value 数据存储方案实现高并发、大流量的 Session 存储。