我試圖在認證用戶並將會話寫入數據庫後直接更新由Zend_Session_SaveHandler_DbTable使用的會話表。但是我既不能更新也不能獲取新插入的行,即使我用來檢查(Zend_Session :: getId())的會話ID是有效的,並且行確實被插入到表中。在獲取所有會話ID時(在相同的請求上),我新插入的那個會從結果中丟失。它確實出現在結果中,如果我用其他東西獲取它。 我檢查過它是否是交易問題,而且看起來並不是問題 - 當我提取結果時沒有活動事務。我也嘗試在使用sleep()寫入後幾秒鐘讀取,這沒有幫助。Zend:生成會話ID後從會話數據庫表獲取行
$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);
$ update failed。
$ load不包含用$ auth-> getStorage() - > write($ identity)寫入的行。 $ qload確實包含正確的查詢 - 將其複製到其他地方會導致預期的結果,即插入的行包含在結果中。
使用的數據庫是MySQL - InnoDB。
如果有人知道如何在不修改Zend_Session_SaveHandler_DbTable的情況下直接解決此問題(即在相同的請求上,而不是在重定向到另一個頁面之後進行更新):非常感謝!