Zend_Session_SaveHandler_DbTable не генерирует действительный идентификатор сеанса? - PullRequest
1 голос
/ 08 февраля 2010

Я сейчас рву свои волосы, пытаясь сохранить аутентификацию через сеанс базы данных. Я установил Zend_Session для использования базы данных, и при проверке Zend записывает значения в базу данных. Тем не менее, идентификатор для этих сессий, кажется, не совпадает с PHPSESSID - все же, когда я получаю Zend_Session, чтобы вернуть идентификатор - он возвращает совпадающее значение.

Итак - в моей БД у меня есть:

ID.....MODIFIED.......LIFETIME...DATA

344..1265640083.......1440.......BLAH

И все же, если я позвоню id из самой Zend Session ...

$id = Zend_Session::getId();
echo $id; // mbgspg2gvf1c3r9l7qpv6orgt4

Я предполагаю, что идентификатор, сгенерированный Zend Session, должен совпадать с идентификатором PHPSESSID, верно?

Вот мой бутстрап

    $dbAdapter = $resource->getAdapter();//connection is tested and working

    Zend_Registry::set("db", $dbAdapter);

    $config = array(
                    'name'           => 'sessions',
                    'primary'        => 'id',
                    'modifiedColumn' => 'modified',
                    'dataColumn'     => 'data',
                    'lifetimeColumn' => 'lifetime',
                    'db'             => $dbAdapter
                    );
    Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
    Zend_Session::start();

Буду вечно благодарен, если кто-нибудь сможет пролить на него свет ...

1 Ответ

1 голос
/ 08 февраля 2010

Ну, я в замешательстве. Я изменил тип таблицы на InnoDB, и теперь это работает.

В мою защиту - в основной документации не указывается InnoDB: http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html

тогда как здесь: http://framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable?showComments=false

Я молюсь, чтобы это исправить. Возможно, локальная ошибка в моем Apache?

...