php session自定义处理

 1 session.gc_probability = 1        //默认是1 ,越大越好
2
3 session.gc_divisor = 100 //默认是100,越小越好
4
5 // 默认是一百次请求调用一次gc 。session.gc_probability相当于分子,session.gc_divisor相当于分母。如果想每次都调用gc 两个改成一样就可以了
6
7 session.gc_maxlifetime = 30 // session生存时间
8
9 <?php
10 function session_open($session_path, $session_name)
11 {
12 mysql_connect('localhost', 'root', 'root');
13 mysql_select_db('demo');
14 mysql_query("SET NAMES utf8");
15 }
16
17 function session_close()
18 {
19 return TRUE;
20 }
21
22 function session_read($SID)
23 {
24 $query = "SELECT value FROM session where SID= '$SID' AND expiration >".time();
25 $result = mysql_query($query);
26 if(mysql_num_rows($result))
27 {
28 $row = mysql_fetch_assoc($result);
29 $value = $row['value'];
30 return $value;
31 }else
32 {
33 return FALSE;
34 }
35 }
36
37 function session_write($SID, $value)
38 {
39 $lifetime = get_cfg_var("session.gc_maxlifetime");
40 $expiration = time() + $lifetime;
41 $query = "INSERT INTO session VALUES('$SID', '$expiration', '$value')";
42 $result = mysql_query($query);
43
44 if (!$result)
45 {
46 $query = "UPDATE session SET expiration = '$expiration', value = '$value' WHERE SID = '$SID' AND expiration >".time();
47 $result = mysql_query($query);
48 }
49 }
50
51 function sessionDestroy($SID)
52 {
53 $query = "DELETE FROM session WHERE SID = '$SID'";
54 $result = mysql_query($query);
55 }
56
57 function session_gc()
58 {
59 $query = "DELETE FROM session WHERE expiration <".time();
60 $result = mysql_query($query);
61 echo mysql_affected_rows();
62 }
63
64 session_set_save_handler("session_open", "session_close", "session_read", "session_write", "sessionDestroy", "session_gc");
65 session_start();
66
67 ?>
posted @ 2012-02-14 22:17  mr.coke  阅读(1284)  评论(0编辑  收藏  举报