码迷,mamicode.com
首页 > 其他好文 > 详细

20150127--Session入库

时间:2016-04-22 23:40:50      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 

和涛哥学习MVC

目录

和涛哥学习MVC三.......................................................................................................... 1

一、简介.......................................................................................................................... 2

1、什么是session?.................................................................................................. 2

2、为什么需要会话控制技术?.................................................................................. 2

3、session原理图...................................................................................................... 2

二、session入库的实现.................................................................................................... 3

1、要使用到的知识点:............................................................................................ 3

2、代码实现.............................................................................................................. 4

a)定义基本操作的6个函数.............................................................................. 4

b)更改session存取方式,并开启session.......................................................... 4

c)session系统的gc垃圾回收机制..................................................................... 5

3、session入库......................................................................................................... 6

a)在open方法中,链接数据库......................................................................... 6

b)在close方法中,关闭链接资源..................................................................... 6

c)在read方法中,读取sess_id信息,在read方法中,可以通过参数来调用系统中的session_id 7

d)在write方法中,实现对session数据库的写入操作........................................ 7

e)在destroy方法中,销毁指定session_id的数据.............................................. 7

f)在gc方法中,判断session数据是否过期....................................................... 7

三、整合session入库到MVC项目中................................................................................ 8

1、设计数据库如下图所示......................................................................................... 8

2、在Core文件夹中创建Session.class.php做为核心入库文件..................................... 9

3、创建Session类..................................................................................................... 9

4、创建session入库的6个方法............................................................................... 10

5、继承Model模型,链接数据库,更改session存取方式........................................ 10

6、由于open与close不需要进行相关操作,可以为其设置默认返回值true.............. 10

7、read读方法实现................................................................................................. 11

8、write写方法实现................................................................................................ 11

9、destroy删除方法实现......................................................................................... 11

10、gc垃圾回收方法实现........................................................................................ 11

11、在Core/Application.class.php中更改session存取机制......................................... 12

四、购物车实现.............................................................................................................. 12

1、采用数据库方式存储购物车................................................................................ 12

2、数据库架构........................................................................................................ 12

product 产品表................................................................................................. 12

shopcar 购物车表............................................................................................. 13

order 订单表................................................................................................. 13

一、简介

1、什么是session?

答:一种会话控制技术

2、为什么需要会话控制技术?

1)早期互联网采用HTTP协议发送请求,但由于HTTP是无状态的请求,所以网站管理者无法获知当前用户的用户轨迹。

2)Cookie技术

相当于超市的会员卡

3)Session技术

相当于超市发卡但是保留实体卡,只发给我们卡号(Session_ID)

3、session原理图

技术分享

由上图可知,session操作主要是对session的增删改查(session文件的读取与写入)操作,但是由于文件读写操作要实现对服务器的I/O进行开销,如淘宝这种大数据系统,如果采用文本方式保存session数据,那么是无法想象的,另如想统计当前在线人数等信息,使用数据集群共享session数据时,都是很难实现的。

那么如何实现对以上问题的解决呢?

答:Session入库技术

Session入库技术实际就是人为更改session数据读取与写入的位置,如下图所示:

技术分享

二、session入库的实现

1、要使用到的知识点:

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc )

功能:实现对session读取存取方式的函数

$open : 打开session读写操作

$close : 关闭session读写操作

$read : 读取session文件(读取数据库中的session信息)

$write : 写入session文件(写入session信息到数据库中)

$destroy : 销毁session文件(删除session信息)

$gc : 当session文件过期时,系统自动删除该文件(删除过期session记录)

2、代码实现

a)定义基本操作的6个函数

技术分享

b)更改session存取方式,并开启session

技术分享

运行效果:

技术分享

说明:当系统只有session_start()开启函数时,系统会自动调用open、read、write、close四个函数,当系统中存在session_destroy函数时,系统将自动关闭session文件写入功能,而出发系统中的destroy函数,如下图所示:

代码如下:

技术分享

技术分享

c)session系统的gc垃圾回收机制

php系统中,可以在php.ini配置文件中设置gc回收概率,默认系统回收概率1/1000

可以通过更改php.ini中的以下代码,更改回收概率

技术分享

更改php.ini配置信息,如下

技术分享

运行效果,如下

技术分享

以上方式人为更改系统gc垃圾回收概率,但是建议该概率的值为1/1000 ~ 1/5000

3、session入库

a)在open方法中,链接数据库

技术分享

b)在close方法中,关闭链接资源

技术分享

c)在read方法中,读取sess_id信息,在read方法中,可以通过参数来调用系统中的session_id

技术分享

d)在write方法中,实现对session数据库的写入操作

技术分享

e)在destroy方法中,销毁指定session_id的数据

技术分享

f)在gc方法中,判断session数据是否过期

可以通过php.ini中的以下参数进行判断

技术分享

默认session文件过期时间为24分钟,1440秒

判断session数据是否过期

技术分享

运行效果如下:

技术分享

20150127--Session入库

标签:

原文地址:http://www.cnblogs.com/lifushan/p/5423196.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!