在application.ini中设置Zend Framework DB垃圾回收? (和bootstrap?)

时间:2012-09-09 10:22:46

标签: php zend-framework

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

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

1 个答案:

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

可能还有其他实例删除了数据库记录,但我没有找到它们。