J'essaie de mettre à jour la table de session utilisée par Zend_Session_SaveHandler_DbTable directement après l'authentification de l'utilisateur et l'écriture de la session dans la base de données. Mais je ne peux ni mettre à jour ni récupérer la ligne nouvellement insérée, même si l'identifiant de session que j'utilise pour vérifier (Zend_Session :: getId()) est valide et la ligne est en effet insérée dans la table. Lors de l'extraction de tous les identifiants de session (sur la même requête), celui que j'ai nouvellement inséré manque dans les résultats. Il apparaît dans les résultats si je le récupère avec autre chose. J'ai vérifié si c'était un problème avec les transactions et cela ne semble pas être le problème - il n'y a pas de transaction active lorsque je récupère les résultats. J'ai aussi essayé d'aller chercher quelques secondes après avoir écrit en utilisant sleep(), ce qui ne m'aide pas.Zend: Récupérer une ligne de la table db de session après avoir généré l'ID de session
$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);
$ mise à jour échoue.
$ load ne contient pas la ligne écrite avec $ auth-> getStorage() -> write ($ identity). $ qload contient la requête correcte - la copier vers un autre endroit mène au résultat attendu, c'est-à-dire que la ligne insérée est incluse dans les résultats.
La base de données utilisée est MySQL - InnoDB.
Si quelqu'un sait comment corriger directement ceci (c'est-à-dire sur la même demande, ne faisant pas quelque chose comme la mise à jour après la redirection vers une autre page) sans modifier Zend_Session_SaveHandler_DbTable: Merci beaucoup!