@@ -32,9 +32,17 @@ class session {
3232
3333 private $ session_array = array ();
3434 private $ db ;
35+ private $ timeout = 0 ;
3536
36- function __construct () {
37+ function __construct ($ session_timeout = 0 ) {
3738 $ this ->db = new db ;
39+ $ this ->timeout = $ session_timeout ;
40+ }
41+
42+ function set_timeout ($ session_timeout = 0 ) {
43+ $ old_timeout = $ this ->timeout ;
44+ $ this ->timeout = $ session_timeout ;
45+ return $ old_timeout ;
3846 }
3947
4048 function open ($ save_path , $ session_name ) {
@@ -51,8 +59,12 @@ function close () {
5159 }
5260
5361 function read ($ session_id ) {
54-
55- $ rec = $ this ->db ->queryOneRecord ("SELECT * FROM sys_session WHERE session_id = ' " .$ this ->db ->quote ($ session_id )."' " );
62+
63+ if ($ this ->timeout > 0 ) {
64+ $ rec = $ this ->db ->queryOneRecord ("SELECT * FROM sys_session WHERE session_id = ' " .$ this ->db ->quote ($ session_id )."' AND last_updated >= DATE_SUB(NOW(), INTERVAL " . intval ($ this ->timeout ) . " MINUTE) " );
65+ } else {
66+ $ rec = $ this ->db ->queryOneRecord ("SELECT * FROM sys_session WHERE session_id = ' " .$ this ->db ->quote ($ session_id )."' " );
67+ }
5668
5769 if (is_array ($ rec )) {
5870 $ this ->session_array = $ rec ;
@@ -108,12 +120,16 @@ function destroy ($session_id) {
108120
109121 function gc ($ max_lifetime ) {
110122
111- $ real_now = date ('Y-m-d H:i:s ' );
112- $ dt1 = strtotime ("$ real_now - $ max_lifetime seconds " );
113- $ dt2 = date ('Y-m-d H:i:s ' , $ dt1 );
123+ /*if($this->timeout > 0) {
124+ $this->db->query("DELETE FROM sys_session WHERE last_updated < DATE_SUB(NOW(), INTERVAL " . intval($this->timeout) . " MINUTE)");
125+ } else {*/
126+ $ real_now = date ('Y-m-d H:i:s ' );
127+ $ dt1 = strtotime ("$ real_now - $ max_lifetime seconds " );
128+ $ dt2 = date ('Y-m-d H:i:s ' , $ dt1 );
114129
115- $ sql = "DELETE FROM sys_session WHERE last_updated < ' $ dt2' " ;
116- $ this ->db ->query ($ sql );
130+ $ sql = "DELETE FROM sys_session WHERE last_updated < ' $ dt2' " ;
131+ $ this ->db ->query ($ sql );
132+ //}
117133
118134 return true ;
119135
0 commit comments