Bonjour,
Pour mon projet j'ai besoin de stocker mes sessions en bdd. J'utilise donc la fonction session_set_save_handler
Malheureusement le problème qui se pose c'est que lorsque cette fonction est appelée en callback, Doctrine plante :
Fatal error: spl_autoload() : Class Doctrine_Inflector could not be loaded in ...
Mon code avec le session_set_save_handler :
Ma fonction write :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ini_set('session.save_handler', 'user'); session_name($config['constant']['sessionName']); $session = $baseLib->load_classe('session', 'lib-class', TRUE); session_set_save_handler(array($session, 'open'), array($session, 'close'), array($session, 'read'), array($session, 'write'), array($session, 'destroy'), array($session, 'open')); session_start(); //Donne l'erreur plus haut $_SESSION['test'] = 'Ceci est un test';]
Et c'est bien quand elle est appelée en callback que Doctrine plante car si j'appelle la fonction comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public function write($sid, $data) { $expire = intval(time() + $this->session_time); $q = Doctrine_Query::create() ->from('Sessions s') ->where('s.sid = ?', $sid); $count = $q->count(); if($count == 0) { $session = new Sessions(); $session->sid = (int) $sid; $session->sdata = $data; $session->expire = $expire; $session->save(); return TRUE; } else { $q = Doctrine_Query::create() ->update('Sessions s') ->set('s.sdata', '?', $data) ->set('s.expire', '?', $expire) ->where('s.sid = ?', $sid); $q->execute(); } return TRUE; }
Le code se déroule correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $session->write(1, 'TEST');
Les infos supplémentaires (Le domain généré) :
Doctrine est en version 1.2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 abstract class BaseSessions extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('sessions'); $this->hasColumn('id', 'integer', 1, array( 'type' => 'integer', 'fixed' => 0, 'unsigned' => true, 'primary' => true, 'autoincrement' => true, 'length' => '1', )); $this->hasColumn('sdata', 'string', null, array( 'type' => 'string', 'fixed' => 0, 'unsigned' => false, 'primary' => false, 'notnull' => false, 'autoincrement' => false, 'length' => '', )); $this->hasColumn('expire', 'integer', 8, array( 'type' => 'integer', 'fixed' => 0, 'unsigned' => false, 'primary' => false, 'notnull' => false, 'autoincrement' => false, 'length' => '8', )); $this->hasColumn('sid', 'integer', 1, array( 'type' => 'integer', 'fixed' => 0, 'unsigned' => false, 'primary' => false, 'notnull' => false, 'autoincrement' => false, 'length' => '1', )); } public function setUp() { parent::setUp(); } }
Avez-vous une idée d'où cela peut provenir ?
Merci et bonne journée!
Partager