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 に答える