diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-06-27 05:48:22 -0700 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-06-27 05:48:22 -0700 |
commit | 0ca22cf6e2bd80247520f7c1f83535f8de5fed0a (patch) | |
tree | 2a3467c6b7e98dd1c13e2930893a378afb4d007a | |
parent | 48d671ac39de0ebfd36858d784d3066ecbb89c10 (diff) |
a memcached_dataobject class for saving sessions
-rwxr-xr-x | classes/Session.php | 67 | ||||
-rw-r--r-- | lib/util.php | 7 |
2 files changed, 73 insertions, 1 deletions
diff --git a/classes/Session.php b/classes/Session.php index 9b48dabac..6f13c7d27 100755 --- a/classes/Session.php +++ b/classes/Session.php @@ -39,4 +39,71 @@ class Session extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + + static function open($save_path, $session_name) + { + return true; + } + + static function close() + { + return true; + } + + static function read($id) + { + $session = Session::staticGet('id', $id); + + if (empty($session)) { + return ''; + } else { + return (string)$session->session_data; + } + } + + static function write($id, $session_data) + { + $session = Session::staticGet('id', $id); + + if (empty($session)) { + $session = new Session(); + + $session->id = $id; + $session->session_data = $session_data; + $session->created = common_sql_now(); + + return $session->insert(); + } else { + $session->session_data = $session_data; + + return $session->update(); + } + } + + static function destroy($id) + { + $session = Session::staticGet('id', $id); + + if (!empty($session)) { + return $session->delete(); + } + } + + static function gc($maxlifetime) + { + $epoch = time() - $maxlifetime; + + $qry = 'DELETE FROM session ' . + 'WHERE modified < "'.$epoch.'"'; + + $session = new Session(); + + $session->query($qry); + } + + static function setSaveHandler() + { + session_set_save_handler('Session::open', 'Session::close', 'Session::read', + 'Session::write', 'Session::destroy', 'Session::gc'); + } } diff --git a/lib/util.php b/lib/util.php index e5a8eaea0..b3496a09e 100644 --- a/lib/util.php +++ b/lib/util.php @@ -828,7 +828,12 @@ function common_date_iso8601($dt) function common_sql_now() { - return strftime('%Y-%m-%d %H:%M:%S', time()); + return common_sql_date(time()); +} + +function common_sql_date($datetime) +{ + return strftime('%Y-%m-%d %H:%M:%S', $datetime); } function common_redirect($url, $code=307) |