- substr: documentation ( source)
- var_dump: documentation ( source)
- explode: documentation ( source)
- parse_url: documentation ( source)
- trigger_error: documentation ( source)
- strtolower: documentation ( source)
<?php
class MemcacheSessionModule /*implements \SessionHandlerInterface */ {
const UNIX_PREFIX = 'unix://';
const FILE_PREFIX = 'file://';
/**
* Our Memcache Pool
* @var Memcache
*/
private $pool;
public function close() {
if ($this->pool instanceof Memcache) {
return $this->pool->close();
}
return true;
}
public function destroy($sessionId) {
}
public function gc($maxLifetime) {
}
public function open($savePath, $name) {
$serverList = self::parseSavePath($savePath);
if (!$serverList) {
return false;
}
foreach ($serverList as $serverInfo) {
}
}
public function read($sessionId) {
}
public function write($sessionId, $data) {
}
private static function parseSavePath($savePath) {
if (empty($savePath)) {
trigger_error(
"Failed to parse session.save_path (empty save_path)",
E_WARNING);
return false;
}
$return = array();
$serverList = explode(',', $savePath);
foreach ($serverList as $url) {
// Swap unix:// to file:// for parse_url
if (strtolower(substr($url, 0, strlen(self::UNIX_PREFIX)))
=== self::UNIX_PREFIX) {
$url = self::FILE_PREFIX . substr($url, strlen(self::UNIX_PREFIX));
}
$parsedUrlData = parse_url($url);
var_dump($parsedUrlData);
}
}
}
$session = new MemcacheSessionModule;
$session->open('unix:///var/run/memcache.sock?weight=123,tcp://127.0.0.1:11211');