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:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

View 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;
}
}