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 :
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';]
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
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;
    }
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
$session->write(1, 'TEST');
Le code se déroule correctement.

Les infos supplémentaires (Le domain généré) :
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();
 
    }
}
Doctrine est en version 1.2.

Avez-vous une idée d'où cela peut provenir ?

Merci et bonne journée!