The term session_set_save_handler is not related to MongoDB — it actually belongs to PHP, not MongoDB.
Let’s clarify this clearly
What is session_set_save_handler?
In PHP, session_set_save_handler() is a function used to define how session data should be stored and retrieved.
By default, PHP stores session data in files on the server, but using this function, you can store sessions in a database, such as MongoDB, MySQL, Redis, etc.
How it relates to MongoDB
When developers want to store PHP sessions in MongoDB, they use session_set_save_handler() to tell PHP how to save and load session data using MongoDB as the backend.
Here’s the flow:
- Create a custom session handler in PHP (usually a class).
- Implement session handler interface methods like:
open()close()read()write()destroy()gc()(garbage collection)
- Use
session_set_save_handler()to register this class. - Start sessions normally with
session_start()— now data is stored in MongoDB.
Example: PHP Session in MongoDB
<?php
class MongoSessionHandler implements SessionHandlerInterface {
private $collection;
public function __construct($mongoUri, $dbName, $collectionName) {
$client = new MongoDB\Client($mongoUri);
$this->collection = $client->$dbName->$collectionName;
}
public function open($savePath, $sessionName) { return true; }
public function close() { return true; }
public function read($id) {
$session = $this->collection->findOne(['_id' => $id]);
return $session ? $session['data'] : '';
}
public function write($id, $data) {
$this->collection->updateOne(
['_id' => $id],
['$set' => ['data' => $data, 'timestamp' => time()]],
['upsert' => true]
);
return true;
}
public function destroy($id) {
$this->collection->deleteOne(['_id' => $id]);
return true;
}
public function gc($maxLifetime) {
$this->collection->deleteMany(['timestamp' => ['$lt' => time() - $maxLifetime]]);
return true;
}
}
// Use the handler
$handler = new MongoSessionHandler('mongodb://localhost:27017', 'testdb', 'sessions');
session_set_save_handler($handler, true);
session_start();
$_SESSION['user'] = 'Mital Goswami';
echo "Session stored in MongoDB!";
✅ Summary
| Concept | Belongs To | Purpose |
|---|---|---|
session_set_save_handler() | PHP | Defines custom session storage (like MongoDB) |
| MongoDB | Database | Stores session data (key–value style) |
| Use Together | PHP + MongoDB | Store PHP session data in MongoDB collections |
Would you like me to show you a step-by-step setup of PHP sessions stored in MongoDB (including required extensions and commands)?
