2015-08-18 00:00:26 +00:00
< ? 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 ;
2018-11-23 12:29:20 +00:00
@ trigger_error ( sprintf ( 'The class %s is deprecated since Symfony 3.4 and will be removed in 4.0. Use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler instead.' , MemcacheSessionHandler :: class ), E_USER_DEPRECATED );
2015-08-18 00:00:26 +00:00
/**
* @ author Drak < drak @ zikula . org >
2018-11-23 12:29:20 +00:00
*
* @ deprecated since version 3.4 , to be removed in 4.0 . Use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler instead .
2015-08-18 00:00:26 +00:00
*/
class MemcacheSessionHandler implements \SessionHandlerInterface
{
private $memcache ;
/**
* @ var int Time to live in seconds
*/
private $ttl ;
/**
2017-02-03 00:28:38 +00:00
* @ var string Key prefix for shared environments
2015-08-18 00:00:26 +00:00
*/
private $prefix ;
/**
* Constructor .
*
* List of available options :
* * prefix : The prefix to use for the memcache keys in order to avoid collision
* * expiretime : The time to live in seconds
*
* @ param \Memcache $memcache A \Memcache instance
* @ param array $options An associative array of Memcache options
*
* @ throws \InvalidArgumentException When unsupported options are passed
*/
public function __construct ( \Memcache $memcache , array $options = array ())
{
if ( $diff = array_diff ( array_keys ( $options ), array ( 'prefix' , 'expiretime' ))) {
2018-11-23 12:29:20 +00:00
throw new \InvalidArgumentException ( sprintf ( 'The following options are not supported "%s"' , implode ( ', ' , $diff )));
2015-08-18 00:00:26 +00:00
}
$this -> memcache = $memcache ;
$this -> ttl = isset ( $options [ 'expiretime' ]) ? ( int ) $options [ 'expiretime' ] : 86400 ;
$this -> prefix = isset ( $options [ 'prefix' ]) ? $options [ 'prefix' ] : 'sf2s' ;
}
/**
* { @ inheritdoc }
*/
public function open ( $savePath , $sessionName )
{
return true ;
}
/**
* { @ inheritdoc }
*/
public function close ()
{
2017-02-03 00:28:38 +00:00
return true ;
2015-08-18 00:00:26 +00:00
}
/**
* { @ inheritdoc }
*/
public function read ( $sessionId )
{
return $this -> memcache -> get ( $this -> prefix . $sessionId ) ? : '' ;
}
/**
* { @ inheritdoc }
*/
public function write ( $sessionId , $data )
{
return $this -> memcache -> set ( $this -> prefix . $sessionId , $data , 0 , time () + $this -> ttl );
}
/**
* { @ inheritdoc }
*/
public function destroy ( $sessionId )
{
2018-11-23 12:29:20 +00:00
$this -> memcache -> delete ( $this -> prefix . $sessionId );
return true ;
2015-08-18 00:00:26 +00:00
}
/**
* { @ inheritdoc }
*/
public function gc ( $maxlifetime )
{
// not required here because memcache will auto expire the records anyhow.
return true ;
}
/**
2015-10-08 18:40:12 +00:00
* Return a Memcache instance .
2015-08-18 00:00:26 +00:00
*
* @ return \Memcache
*/
protected function getMemcache ()
{
return $this -> memcache ;
}
}