78)PHP,编写session存储机制(将数据写进数据库)的代码整理(未实验)

 1 <?php
 2 
 3 
 4 
 5 function userSessionBegin() {
 6     echo '<br>Begin<br>';
 7     //初始化数据库服务器连接,这个函数是最先执行,所以,以下的几个函数都用到数据库连接,所以,我就把它放在最先执行的函数里面,因为只要是数据库连接了,在整个文件中都有效。
 8     $link = mysql_connect('127.0.0.1:3306', 'root', '1234abcd');
 9     mysql_query('set names utf8');
10     mysql_query('use `php34`');
11 }
12 function userSessionEnd() {
13     echo '<br>End<br>';
14     return true;
15 }
16 /**
17  * 读操作
18  * 执行时机:    session机制开启程中执行
19  * 工作:        从当前session数据区读取内容
20  * @param $sess_id string
21  * @return string
22  */
23 function userSessionRead($sess_id) {
24     echo '<br>Read<br>';
25     //查询
26     $sql = "SELECT session_content FROM `session` WHERE session_id='$sess_id'";
27     $result = mysql_query($sql);
28     if ($row = mysql_fetch_assoc($result)) {
29         return $row['session_content'];
30     } else {
31         //没有找到,返回空字符串
32         return '';
33     }
34 }
35 /**
36  * 写操作
37  * 执行时机:    脚本周期结束时,PHP在整理收尾时
38  * 工作:        将当前脚本处理好的session数据,持久化存储到数据库中!
39  * @param $sess_id string
40  * @param $sess_content string 序列化好的session内容字符串
41  * @return bool
42  */
43 function userSessionWrite($sess_id, $sess_content) {
44     echo '<br>Write<br>';
45     // 完成写,这里的REPLACE和INSERT一样,都是要是数据存在,就不写了,要是数据不在,就写进数据库
46     $sql = "REPLACE INTO `session` VALUES ('$sess_id', '$sess_content', unix_timestamp())";
47     // $sql = "INSERT INTO `session` VALUES ('$sess_id', '$sess_content') ON DUPLICATE KEY UPDATE session_content='$sess_content', last_time=unix_timestamp()"
48     return mysql_query($sql);
49 }
50 /**
51  * 删除操作
52  * 执行时机:    调用了session_destroy()销毁session过程中被调用
53  * 工作:        删除当前session的数据区(记录)
54  * @param $sess_id string
55  * @return bool
56  */
57 function userSessionDelete($sess_id) {
58     echo '<br>Delete<br>';
59     //删除
60     $sql = "DELETE FROM `session` WHERE session_id='$sess_id'";
61     return mysql_query($sql);
62 }
63 /**
64  * 垃圾回收操作
65  * 执行时机:    开启session机制时,有概率的执行
66  * 工作:        删除那些过期的session数据区
67  * @param $max_lifetime
68  * @return bool
69  */
70 function userSessionGC($max_lifetime) {
71     echo '<br>GC<br>';
72     //删除
73     $sql = "DELETE FROM `session` WHERE last_time<unix_timestamp()-$max_lifetime";
74     return mysql_query($sql);
75 }
76 
77 // 设置
78 session_set_save_handler(
79     'userSessionBegin',
80     'userSessionEnd',
81     'userSessionRead',
82     'userSessionWrite',
83     'userSessionDelete',
84     'userSessionGC'
85     );
86 ini_set('session.save_handler', 'user');

 

posted @ 2017-08-18 19:09  小油菜1  阅读(198)  评论(0编辑  收藏  举报