REDROOM
PHP 8.3.31
Path:
Logout
Edit File
Size: 4.45 KB
Close
//opt/alt/php54/usr/share/pear/Symfony/Component/HttpFoundation/Session/Storage/Handler/MongoDbSessionHandler.php
Text
Base64
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; /** * MongoDB session handler * * @author Markus Bachmann <markus.bachmann@bachi.biz> */ class MongoDbSessionHandler implements \SessionHandlerInterface { /** * @var \Mongo */ private $mongo; /** * @var \MongoCollection */ private $collection; /** * @var array */ private $options; /** * Constructor. * * List of available options: * * database: The name of the database [required] * * collection: The name of the collection [required] * * id_field: The field name for storing the session id [default: _id] * * data_field: The field name for storing the session data [default: data] * * time_field: The field name for storing the timestamp [default: time] * * @param \Mongo|\MongoClient $mongo A MongoClient or Mongo instance * @param array $options An associative array of field options * * @throws \InvalidArgumentException When MongoClient or Mongo instance not provided * @throws \InvalidArgumentException When "database" or "collection" not provided */ public function __construct($mongo, array $options) { if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo)) { throw new \InvalidArgumentException('MongoClient or Mongo instance required'); } if (!isset($options['database']) || !isset($options['collection'])) { throw new \InvalidArgumentException('You must provide the "database" and "collection" option for MongoDBSessionHandler'); } $this->mongo = $mongo; $this->options = array_merge(array( 'id_field' => '_id', 'data_field' => 'data', 'time_field' => 'time', ), $options); } /** * {@inheritDoc} */ public function open($savePath, $sessionName) { return true; } /** * {@inheritDoc} */ public function close() { return true; } /** * {@inheritDoc} */ public function destroy($sessionId) { $this->getCollection()->remove(array( $this->options['id_field'] => $sessionId )); return true; } /** * {@inheritDoc} */ public function gc($lifetime) { /* Note: MongoDB 2.2+ supports TTL collections, which may be used in * place of this method by indexing the "time_field" field with an * "expireAfterSeconds" option. Regardless of whether TTL collections * are used, consider indexing this field to make the remove query more * efficient. * * See: http://docs.mongodb.org/manual/tutorial/expire-data/ */ $time = new \MongoDate(time() - $lifetime); $this->getCollection()->remove(array( $this->options['time_field'] => array('$lt' => $time), )); return true; } /** * {@inheritDoc] */ public function write($sessionId, $data) { $this->getCollection()->update( array($this->options['id_field'] => $sessionId), array('$set' => array( $this->options['data_field'] => new \MongoBinData($data, \MongoBinData::BYTE_ARRAY), $this->options['time_field'] => new \MongoDate(), )), array('upsert' => true, 'multiple' => false) ); return true; } /** * {@inheritDoc} */ public function read($sessionId) { $dbData = $this->getCollection()->findOne(array( $this->options['id_field'] => $sessionId, )); return null === $dbData ? '' : $dbData[$this->options['data_field']]->bin; } /** * Return a "MongoCollection" instance * * @return \MongoCollection */ private function getCollection() { if (null === $this->collection) { $this->collection = $this->mongo->selectCollection($this->options['database'], $this->options['collection']); } return $this->collection; } /** * Return a Mongo instance * * @return \Mongo */ protected function getMongo() { return $this->mongo; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 8
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
MemcachedSessionHandler.php
2.87 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
MemcacheSessionHandler.php
2.72 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
MongoDbSessionHandler.php
4.45 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
NativeFileSessionHandler.php
1.63 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
NativeSessionHandler.php
563 B
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
NullSessionHandler.php
1.17 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PdoSessionHandler.php
8.52 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
WriteCheckSessionHandler.php
1.98 KB
lrw-r--r--
2019-12-18 11:22:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).