/** * 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; }
/** * 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()); }
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()); }
/** * 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; }