feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
107
f_core/f_classes/class.memcachesessionhandler.php
Normal file
107
f_core/f_classes/class.memcachesessionhandler.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* memcacheSessionHandler class
|
||||
* @class memcacheSessionHandler
|
||||
* @file memcacheSessionHandler.class.php
|
||||
* @brief This class is used to store session data with memcache, it store in json the session to be used more easily in Node.JS
|
||||
* @version 0.1
|
||||
* @date 2012-04-11
|
||||
* @author Deisss
|
||||
* @licence LGPLv3
|
||||
* This class is used to store session data with memcache, it store in json the session to be used more easily in Node.JS
|
||||
*/
|
||||
class VmemcacheSessionHandler{
|
||||
private $host = "localhost";
|
||||
private $port = 11211;
|
||||
private $lifetime = 0;
|
||||
private $memcache = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct(){
|
||||
$this->memcache = new Memcache;
|
||||
$this->memcache->connect($this->host, $this->port) or die("Error : Memcache is not ready");
|
||||
session_set_save_handler(
|
||||
array($this, "open"),
|
||||
array($this, "close"),
|
||||
array($this, "read"),
|
||||
array($this, "write"),
|
||||
array($this, "destroy"),
|
||||
array($this, "gc")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
public function __destruct(){
|
||||
session_write_close();
|
||||
$this->memcache->close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the session handler, set the lifetime ot session.gc_maxlifetime
|
||||
* @return boolean True if everything succeed
|
||||
*/
|
||||
public function open(){
|
||||
$this->lifetime = ini_get('session.gc_maxlifetime');
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the id
|
||||
* @param string $id The SESSID to search for
|
||||
* @return string The session saved previously
|
||||
*/
|
||||
public function read($id){
|
||||
$tmp = $_SESSION;
|
||||
$_SESSION = json_decode($this->memcache->get("sessions/{$id}"), true);
|
||||
if(isset($_SESSION) && !empty($_SESSION) && $_SESSION != null){
|
||||
$new_data = session_encode();
|
||||
$_SESSION = $tmp;
|
||||
return $new_data;
|
||||
}else{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the session data, convert to json before storing
|
||||
* @param string $id The SESSID to save
|
||||
* @param string $data The data to store, already serialized by PHP
|
||||
* @return boolean True if memcached was able to write the session data
|
||||
*/
|
||||
public function write($id, $data){
|
||||
$tmp = $_SESSION;
|
||||
session_decode($data);
|
||||
$new_data = $_SESSION;
|
||||
$_SESSION = $tmp;
|
||||
return $this->memcache->set("sessions/{$id}", json_encode($new_data), 0, $this->lifetime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete object in session
|
||||
* @param string $id The SESSID to delete
|
||||
* @return boolean True if memcached was able delete session data
|
||||
*/
|
||||
public function destroy($id){
|
||||
return $this->memcache->delete("sessions/{$id}");
|
||||
}
|
||||
|
||||
/**
|
||||
* Close gc
|
||||
* @return boolean Always true
|
||||
*/
|
||||
public function gc(){
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Close session
|
||||
* @return boolean Always true
|
||||
*/
|
||||
public function close(){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user