mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-27 22:24:12 +01:00
Package operations: 2 installs, 23 updates, 0 removals - Updating psr/log (1.1.0 => 1.1.2) - Updating symfony/debug (v3.4.30 => v3.4.35) - Updating symfony/console (v3.4.30 => v3.4.35) - Updating symfony/dotenv (v3.4.30 => v3.4.35) - Updating symfony/routing (v3.4.30 => v3.4.35) - Updating symfony/finder (v3.4.30 => v3.4.35) - Updating symfony/filesystem (v3.4.30 => v3.4.35) - Installing symfony/polyfill-util (v1.12.0) - Installing symfony/polyfill-php56 (v1.12.0) - Updating symfony/http-foundation (v3.4.30 => v3.4.35) - Updating symfony/event-dispatcher (v3.4.30 => v3.4.35) - Updating symfony/http-kernel (v3.4.30 => v3.4.35) - Updating symfony/config (v3.4.30 => v3.4.35) - Updating symfony/dependency-injection (v3.4.30 => v3.4.35) - Updating symfony/class-loader (v3.4.30 => v3.4.35) - Updating symfony/cache (v3.4.30 => v3.4.35) - Updating symfony/framework-bundle (v3.4.30 => v3.4.35) - Updating twig/twig (v1.42.2 => v1.42.4) - Updating symfony/twig-bridge (v3.4.30 => v3.4.35) - Updating symfony/twig-bundle (v3.4.30 => v3.4.35) - Updating symfony/yaml (v3.4.30 => v3.4.35) - Updating symfony/stopwatch (v3.4.30 => v3.4.35) - Updating symfony/var-dumper (v3.4.30 => v3.4.35) - Updating symfony/web-profiler-bundle (v3.4.30 => v3.4.35) - Updating symfony/css-selector (v3.4.30 => v3.4.35)
120 lines
2.8 KiB
PHP
120 lines
2.8 KiB
PHP
<?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 https://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.
|
|
*
|
|
* @throws \InvalidArgumentException When unsupported options are passed
|
|
*/
|
|
public function __construct(\Memcached $memcached, array $options = [])
|
|
{
|
|
$this->memcached = $memcached;
|
|
|
|
if ($diff = array_diff(array_keys($options), ['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';
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function close()
|
|
{
|
|
return $this->memcached->quit();
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function doRead($sessionId)
|
|
{
|
|
return $this->memcached->get($this->prefix.$sessionId) ?: '';
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
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();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
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;
|
|
}
|
|
}
|