Download the PHP package altmetric/mongo-session-handler without Composer
On this page you can find all versions of the php package altmetric/mongo-session-handler. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download altmetric/mongo-session-handler
More information about altmetric/mongo-session-handler
Files in altmetric/mongo-session-handler
Package mongo-session-handler
Short Description A PHP session handler backed by MongoDB.
License MIT
Homepage https://github.com/altmetric/mongo-session-handler
Informations about the package mongo-session-handler
THIS PROJECT IS DEPRECATED
mongo-session-handler is not maintained anymore.
Mongo Session Handler 
A PHP session handler backed by MongoDB.
Current version: 2.1.0
Supported PHP versions: 5.4, 5.5, 5.6, 7
Note: This package depends on the MongoDB PHP driver extension (mongodb) and its companion PHP library. If you need to use the older, legacy driver (mongo), please see version 1.0.
Installation
Usage
API Documentation
public MongoSessionHandler::__construct(MongoDB\Collection $collection[, Psr\Log\LoggerInterface $logger])
Instantiate a new MongoDB session handler with the following arguments:
$collection: aMongoDB\Collectioncollection to use for session storage;$logger: an optional PSR-3-compliant logger.
The given $collection will be populated with documents using the following schema:
_id: theStringsession ID;data: the session data stored as aMongoDB\BSON\Binaryobject using the old generic binary format for compatibility with older versions of this library;last_accessed: aMongoDB\BSON\UTCDateTimerepresentation of the time this session was last written to.
This handler implements the SessionHandlerInterface meaning that it can be registered as a session handler with session_set_save_handler.
Expiring sessions
If you wish to clean up expired sessions using SessionHandlerInterface::gc, ensure that your session.gc_divisor, session.gc_probability and session.gc_maxlifetime settings are populated accordingly, e.g. the following settings in your php.ini mean that sessions that haven't been updated in over an hour have a 1% chance of being cleaned whenever someone starts a new session:
In order to keep session cleaning fast, you should add an index on the last_accessed field of your session $collection, e.g.
Concurrency
As MongoDB prior to 3.0 does not support document level locking, this session handler operates on a principle of Last Write Wins.
If a user of a session causes two simultaneous writes then you may end up with the following situation:
- Window A reads session value of
['foo' => 'bar']; - Window B reads session value of
['foo' => 'bar']; - Window B writes session value of
['foo' => 'baz']; - Window A writes session value of
['foo' => 'quux'].
The session will now contain ['foo' => 'quux'] as it was the last successful
write. This may be surprising if you're trying to increment some value in a
session as it is not locked during reads and writes:
- Window A reads session value of
['count' => 0]; - Window B reads session value of
['count' => 0]; - Window B writes session value of
['count' => 1]; - Window A writes session value of
['count' => 1].
Acknowledgements
- Nick Ilyin's
php-mongo-sessionserved as a valuable existing implementation of MongoDB-backed sessions in PHP. - Thanks to Josh Ribakoff for suggesting that the logger should be optional.
License
Copyright © 2015-2017 Altmetric LLP
Distributed under the MIT License.
All versions of mongo-session-handler with dependencies
ext-mongodb Version *
psr/log Version ^1.0
mongodb/mongodb Version ^1.0