1

我在 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"

过期的会话不会在数据库中被删除。我错过了什么?引导程序中应该有一些东西吗?如果有人可以提供帮助,将不胜感激。谢谢你。

4

1 回答 1

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;
    }

可能存在删除数据库记录但我没有找到它们的其他情况。

于 2012-09-10T01:14:41.773 回答