Пример #1
0
 /**
  * Open session
  *
  * @param string $savePath
  * @param string $name
  * @return bool
  */
 public function open($savePath, $name)
 {
     // Note: session save path is not used
     $this->sessionName = $name;
     $this->lifetime = (int) ini_get('session.gc_maxlifetime');
     $this->mongoCollection = $this->mongoClient->selectCollection($this->options->getDatabase(), $this->options->getCollection());
     $this->mongoCollection->createIndex([$this->options->getModifiedField() => 1], $this->options->useExpireAfterSecondsIndex() ? ['expireAfterSeconds' => $this->lifetime] : []);
     return true;
 }
Пример #2
0
 /**
  * Setup performed prior to each test method
  *
  * @return void
  */
 public function setUp()
 {
     if (!extension_loaded('mongo')) {
         $this->markTestSkipped('Zend\\Session\\SaveHandler\\MongoDB tests are not enabled due to missing Mongo extension');
     }
     $this->options = new MongoDBOptions(array('database' => 'zf2_tests', 'collection' => 'sessions'));
     $mongoClass = version_compare(phpversion('mongo'), '1.3.0', '<') ? '\\Mongo' : '\\MongoClient';
     $this->mongo = new $mongoClass();
     $this->mongoCollection = $this->mongo->selectCollection($this->options->getDatabase(), $this->options->getCollection());
 }
Пример #3
0
 public function testSetters()
 {
     $options = new MongoDBOptions();
     $options->setDatabase('testDatabase')->setCollection('testCollection')->setSaveOptions(array('safe' => 2))->setNameField('testName')->setDataField('testData')->setLifetimeField('testLifetime')->setModifiedField('testModified');
     $this->assertEquals('testDatabase', $options->getDatabase());
     $this->assertEquals('testCollection', $options->getCollection());
     $this->assertEquals(array('safe' => 2), $options->getSaveOptions());
     $this->assertEquals('testName', $options->getNameField());
     $this->assertEquals('testData', $options->getDataField());
     $this->assertEquals('testLifetime', $options->getLifetimeField());
     $this->assertEquals('testModified', $options->getModifiedField());
 }
Пример #4
0
 /**
  * Constructor
  *
  * @param Mongo|MongoClient $mongo
  * @param MongoDBOptions $options
  * @throws InvalidArgumentException
  */
 public function __construct($mongo, MongoDBOptions $options)
 {
     if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo)) {
         throw new InvalidArgumentException('Parameter of type %s is invalid; must be MongoClient or Mongo', is_object($mongo) ? get_class($mongo) : gettype($mongo));
     }
     if (null === ($database = $options->getDatabase())) {
         throw new InvalidArgumentException('The database option cannot be emtpy');
     }
     if (null === ($collection = $options->getCollection())) {
         throw new InvalidArgumentException('The collection option cannot be emtpy');
     }
     $this->mongoCollection = $mongo->selectCollection($database, $collection);
     $this->options = $options;
 }