class MemcachedSessionHandler extends AbstractSessionHandler
Memcached based session storage handler based on the Memcached class provided by the PHP memcached extension.
public
|
|
open($savePath, $sessionName)
|
{@inheritdoc} | from AbstractSessionHandler |
protected
|
string |
doRead(string $sessionId)
|
No description | |
protected
|
bool |
doWrite(string $sessionId, string $data)
|
No description | |
protected
|
bool |
doDestroy(string $sessionId)
|
No description | |
public
|
|
validateId($sessionId)
|
{@inheritdoc} | from AbstractSessionHandler |
public
|
|
read($sessionId)
|
{@inheritdoc} | from AbstractSessionHandler |
public
|
|
write($sessionId, $data)
|
{@inheritdoc} | from AbstractSessionHandler |
public
|
|
destroy($sessionId)
|
{@inheritdoc} | from AbstractSessionHandler |
public
|
|
__construct(Memcached $memcached, array $options = array())
|
Constructor. | |
public
|
|
close()
|
{@inheritdoc} | |
public
|
|
updateTimestamp($sessionId, $data)
|
{@inheritdoc} | |
public
|
|
gc($maxlifetime)
|
{@inheritdoc} | |
protected
|
Memcached |
getMemcached()
|
Return a Memcached instance. |
open()public open($savePath, $sessionName)
{@inheritdoc}
$savePath |
||
$sessionName |
doRead()protected string doRead(string $sessionId)
string |
$sessionId |
string |
doWrite()protected bool doWrite(string $sessionId, string $data)
string |
$sessionId |
|
string |
$data |
bool |
doDestroy()protected bool doDestroy(string $sessionId)
string |
$sessionId |
bool |
validateId()public validateId($sessionId)
{@inheritdoc}
$sessionId |
read()public read($sessionId)
{@inheritdoc}
$sessionId |
write()public write($sessionId, $data)
{@inheritdoc}
$sessionId |
||
$data |
destroy()public destroy($sessionId)
{@inheritdoc}
$sessionId |
__construct()public __construct(Memcached $memcached, array $options = array())
Constructor.
List of available options: * prefix: The prefix to use for the memcached keys in order to avoid collision * expiretime: The time to live in seconds.
Memcached |
$memcached |
A \Memcached instance |
array |
$options |
An associative array of Memcached options |
| InvalidArgumentException | When unsupported options are passed |
close()public close()
{@inheritdoc}
updateTimestamp()public updateTimestamp($sessionId, $data)
{@inheritdoc}
$sessionId |
||
$data |
gc()public gc($maxlifetime)
{@inheritdoc}
$maxlifetime |
getMemcached()protected Memcached getMemcached()
Return a Memcached instance.
Memcached |
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\HttpFoundation\Session\Storage\Handler;
/**
* Memcached based session storage handler based on the Memcached class
* provided by the PHP memcached extension.
*
* @see http://php.net/memcached
*
* @author Drak <drak@zikula.org>
*/
class MemcachedSessionHandler extends AbstractSessionHandler
{
private $memcached;
/**
* @var int Time to live in seconds
*/
private $ttl;
/**
* @var string Key prefix for shared environments
*/
private $prefix;
/**
* Constructor.
*
* List of available options:
* * prefix: The prefix to use for the memcached keys in order to avoid collision
* * expiretime: The time to live in seconds.
*
* @param \Memcached $memcached A \Memcached instance
* @param array $options An associative array of Memcached options
*
* @throws \InvalidArgumentException When unsupported options are passed
*/
public function __construct(\Memcached $memcached, array $options = array())
{
$this->memcached = $memcached;
if ($diff = array_diff(array_keys($options), array('prefix', 'expiretime'))) {
throw new \InvalidArgumentException(sprintf(
'The following options are not supported "%s"', implode(', ', $diff)
));
}
$this->ttl = isset($options['expiretime']) ? (int) $options['expiretime'] : 86400;
$this->prefix = isset($options['prefix']) ? $options['prefix'] : 'sf2s';
}
/**
* {@inheritdoc}
*/
public function close()
{
return true;
}
/**
* {@inheritdoc}
*/
protected function doRead($sessionId)
{
return $this->memcached->get($this->prefix.$sessionId) ?: '';
}
/**
* {@inheritdoc}
*/
public function updateTimestamp($sessionId, $data)
{
$this->memcached->touch($this->prefix.$sessionId, time() + $this->ttl);
return true;
}
/**
* {@inheritdoc}
*/
protected function doWrite($sessionId, $data)
{
return $this->memcached->set($this->prefix.$sessionId, $data, time() + $this->ttl);
}
/**
* {@inheritdoc}
*/
protected function doDestroy($sessionId)
{
$result = $this->memcached->delete($this->prefix.$sessionId);
return $result || \Memcached::RES_NOTFOUND == $this->memcached->getResultCode();
}
/**
* {@inheritdoc}
*/
public function gc($maxlifetime)
{
// not required here because memcached will auto expire the records anyhow.
return true;
}
/**
* Return a Memcached instance.
*
* @return \Memcached
*/
protected function getMemcached()
{
return $this->memcached;
}
}