コード例 #1
0
 public function testMultipleInstances()
 {
     $storage1 = new PdoSessionHandler($this->pdo, array('db_table' => 'sessions'), array());
     $storage1->write('foo', 'bar');
     $storage2 = new PdoSessionHandler($this->pdo, array('db_table' => 'sessions'), array());
     $this->assertEquals('bar', $storage2->read('foo'), 'values persist between instances');
 }
コード例 #2
0
 private function testOperations(PDO $connection, array $parameters)
 {
     $options = array('db_table' => $parameters['session_db_table'], 'db_id_col' => $parameters['session_db_id_col'], 'db_data_col' => $parameters['session_db_data_col'], 'db_time_col' => $parameters['session_db_time_col']);
     $errors = array();
     $handler = new PdoSessionHandler($connection, $options);
     $connection->beginTransaction();
     try {
         $handler->write('session_1', 'session 1 data...');
         $handler->write('session_2', 'session 2 data...');
         $handler->read('session_1');
         $handler->read('session_2');
         $handler->destroy('session 1');
         $handler->gc(1);
     } catch (\Exception $ex) {
         $errors[] = 'session_db_cannot_perform_operations';
     }
     $connection->rollBack();
     return $errors;
 }
コード例 #3
0
 public function testSessionGC()
 {
     $previousLifeTime = ini_set('session.gc_maxlifetime', 1000);
     $pdo = $this->getMemorySqlitePdo();
     $storage = new PdoSessionHandler($pdo);
     $storage->open('', 'sid');
     $storage->read('id');
     $storage->write('id', 'data');
     $storage->close();
     $storage->open('', 'sid');
     $storage->read('gc_id');
     ini_set('session.gc_maxlifetime', -1);
     // test that you can set lifetime of a session after it has been read
     $storage->write('gc_id', 'data');
     $storage->close();
     $this->assertEquals(2, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'No session pruned because gc not called');
     $storage->open('', 'sid');
     $data = $storage->read('gc_id');
     $storage->gc(-1);
     $storage->close();
     ini_set('session.gc_maxlifetime', $previousLifeTime);
     $this->assertSame('', $data, 'Session already considered garbage, so not returning data even if it is not pruned yet');
     $this->assertEquals(1, $pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn(), 'Expired session is pruned');
 }
 public function testNewSessionCreated()
 {
     $this->assertEquals(self::$SESSION_DATA_EMPTY, $this->migrationSession->read(self::$SESSION_ID));
     $this->assertEquals(self::$SESSION_DATA_EMPTY, $this->legacySessionTable->read(self::$SESSION_ID));
     $this->assertEquals(self::$SESSION_DATA_EMPTY, $this->sessionTable->read(self::$SESSION_ID));
 }
コード例 #5
0
 public function testSessionGC()
 {
     $previousLifeTime = ini_set('session.gc_maxlifetime', 0);
     $storage = new PdoSessionHandler($this->pdo);
     $storage->open('', 'sid');
     $storage->read('id');
     $storage->write('id', 'data');
     $storage->close();
     $this->assertEquals(1, $this->pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
     $storage->open('', 'sid');
     $this->assertSame('', $storage->read('id'), 'Session already considered garbage, so not returning data even if it is not pruned yet');
     $storage->gc(0);
     $storage->close();
     $this->assertEquals(0, $this->pdo->query('SELECT COUNT(*) FROM sessions')->fetchColumn());
     ini_set('session.gc_maxlifetime', $previousLifeTime);
 }