a memcached_dataobject class for saving sessions

This commit is contained in:
Evan Prodromou 2009-06-27 05:48:22 -07:00
parent 48d671ac39
commit 0ca22cf6e2
2 changed files with 73 additions and 1 deletions

View File

@ -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');
}
}

View File

@ -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)