我在application.ini
中将所有会话存储到数据库中/* Session */
resources.session.use_only_cookies = on
resources.session.gc_maxlifetime = 864000
resources.session.remember_me_seconds = 864000
resources.session.cookie_lifetime = 864000
resources.session.name= "sessionName"
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "sessions"
resources.session.saveHandler.options.primary = "id"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"
数据库中未删除过期的会话。我错过了什么?引导程序中应该有什么东西吗?如果有人可以提供帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
当会话为read
或调用destroy
时,似乎已从数据库中删除过期的会话。
//from Zend_Session_SaveHandler_DbTable
public function read($id)
{
$return = '';
$rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id));
if (count($rows)) {
if ($this->_getExpirationTime($row = $rows->current()) > time()) {
$return = $row->{$this->_dataColumn};
} else {
$this->destroy($id);
}
}
return $return;
}
public function destroy($id)
{
$return = false;
if ($this->delete($this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) {
$return = true;
}
return $return;
}
可能还有其他实例删除了数据库记录,但我没有找到它们。