A MongoDB session driver for Laravel
Laravel Version |
Package Version |
Install using this command |
---|---|---|
12.x | 7.x.x | composer require 1ff/laravel-mongodb-session:^7.0 |
11.x | 6.x.x | composer require 1ff/laravel-mongodb-session:^6.0 |
10.x | 5.x.x | composer require 1ff/laravel-mongodb-session:^5.0 |
9.x | 4.x.x | composer require 1ff/laravel-mongodb-session:^4.0 |
8.x | 3.x.x | composer require 1ff/laravel-mongodb-session:^3.0 |
7.x | 2.x.x | composer require 1ff/laravel-mongodb-session:^2.0 |
5.x.x, 6.x | 1.x.x | composer require 1ff/laravel-mongodb-session:^1.0 |
Install using composer:
composer require 1ff/laravel-mongodb-session
Change the connection in config/session.php
to the name of the mongo connection from your config/database.php
config
'connection' => 'mongodb',
Update your .env file and change the SESSION_DRIVER
to mongodb
SESSION_DRIVER=mongodb
- This driver uses the MongoDB TTL indexes meaning when a session key expires it will be automatically deleted. So no need for garbage collection implementation.
- This way, the collection's size will remain around the size you expect and won't get falsely filled with unused data.
- The package automatically adds a migration which creates the index. If you change the name of the
session.table
you should rerun the ttl index creation commandphp artisan mongodb:session:index
.
This package includes a comprehensive test suite to ensure the MongoDB session handler works correctly. The tests cover:
- Basic session operations (read, write, destroy)
- Integration with Laravel's session system
- HTTP session functionality
- Laravel's testing helpers integration
To run the tests, follow these steps:
- Make sure MongoDB is installed and running on your system
- Install the package dependencies with Composer:
composer install
- Run the tests with PHPUnit:
vendor/bin/phpunit
The package includes a GitHub Actions workflow that automatically runs tests on PHP 8.1 with Laravel 10.x against MongoDB 7. The workflow:
- Sets up a MongoDB service container
- Installs PHP with MongoDB extension
- Caches Composer dependencies for faster builds
- Runs the test suite
This ensures all tests pass before merging new changes.
When all tests are passing, you should see output similar to:
PHPUnit 10.x.x by Sebastian Bergmann and contributors.
............... 15 / 15 (100%)
Time: 00:00.444, Memory: 32.00 MB
OK (15 tests, 41 assertions)
The tests are compatible with:
- PHP 8.1+
- Laravel 10.x
- MongoDB 4.0+
- Unit Tests: These test the
MongoDbSessionHandler
methods directly (open, close, read, write, destroy, gc) - Feature Tests: These test the integration with Laravel's session functionality
- HTTP Tests: These test session handling in HTTP requests and session persistence
- Laravel Helper Tests: These test integration with Laravel's testing helpers like
withSession
andflushSession
If you encounter any issues with the tests, please submit an issue on the GitHub repository.