Я пытаюсь обновить таблицу сеансов, используемую Zend_Session_SaveHandler_DbTable, сразу после аутентификации пользователя и записи сеанса в БД. Но я не могу ни обновить, ни получить вновь вставленную строку, даже если идентификатор сеанса, который я использую для проверки (Zend_Session :: getId ()), действителен, и строка действительно вставлена в таблицу. После извлечения всех идентификаторов сеансов (по одному и тому же запросу) тот, который я недавно вставил, отсутствует в результатах. Это появляется в результатах, если я получаю это с чем-то еще.
Я проверил, является ли это проблемой с транзакциями, и это, кажется, не проблема - нет активной транзакции, когда я получаю результаты. Я также попытался получить несколько секунд после записи с помощью sleep (), что не помогает.
$auth->getStorage()->write($ident);
//sleep(1)
$update = $this->db->update('session', array('uid' => $ident->user_id), 'id='.$this->db->quote(Zend_Session::getId()));
$qload = 'SELECT id FROM session';
$load = $this->db->fetchAll($qload);
echo $qload;
print_r($load);
Не удалось обновить $.
$ load не содержит строку, которая была написана с помощью $ auth-> getStorage () -> write ($ identity). $ qload содержит правильный запрос - копирование его в другое место приводит к ожидаемому результату, то есть вставленная строка включается в результаты.
База данных используется MySQL - InnoDB.
Если кто-то знает, как исправить это напрямую (т.е. по тому же запросу, не выполняя что-то вроде обновления после перенаправления на другую страницу) без изменения Zend_Session_SaveHandler_DbTable: Большое спасибо!