Файл: upload/include/library/phpfox/session/handler/memcache.class.php
Строк: 88
<?php
/**
* [PHPFOX_HEADER]
*/
defined('PHPFOX') or exit('NO DICE!');
/**
* Memcached Session Handler
*
* @copyright [PHPFOX_COPYRIGHT]
* @author Raymond Benc
* @package Phpfox
* @version $Id: memcache.class.php 1668 2010-07-12 08:54:32Z Raymond_Benc $
*/
class Phpfox_Session_Handler_Memcache
{
/**
* Path to save a session.
*
* @var string
*/
private $_sSavePath = '';
/**
* Session prefix.
*
* @var string
*/
private $_sPrefix = 'php_sess_';
/**
* Memcached object.
*
* @var object
*/
private $_oDb = null;
/**
* Start the session.
*
* @return mixed NULL if no errors, however FALSE if session cannot start.
*/
public function init()
{
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc')
);
$this->_oDb = new Memcache;
$aHosts = Phpfox::getParam('core.memcache_hosts');
$bPersistent = Phpfox::getParam('core.memcache_persistent');
foreach ($aHosts as $aHost)
{
$this->_oDb->addServer($aHost['host'], $aHost['port'], $bPersistent);
}
if(!isset($_SESSION))
{
session_start();
}
}
/**
* Open a session file.
*
* @return bool Always TRUE.
*/
public function open()
{
return true;
}
/**
* Close a session file.
*
* @return bool Always TRUE.
*/
public function close()
{
return true;
}
/**
* Read a session file.
*
* @param int $iId File ID.
* @return mixed FALSE if not exists, STRING if file exists.
*/
public function read($iId)
{
if (!($sContent = $this->_oDb->get($this->_sPrefix . $iId)))
{
return false;
}
return (string) $sContent;
}
/**
* Write to session file.
*
* @param int $iId Session ID.
* @param string $mData Session Data.
* @return bool TRUE if success, FALSE on failure.
*/
public function write($iId, $mData)
{
return $this->_oDb->set($this->_sPrefix . $iId, $mData, MEMCACHE_COMPRESSED, 0);
}
/**
* Remove session file.
*
* @param int $iId Session ID.
* @return bool TRUE on success, FALSE on failure.
*/
public function destroy($iId)
{
return $this->_oDb->delete($this->_sPrefix . $iId);
}
/**
* Garbage collecting.
*
* @param int $iMaxLifetime Define how long a session can exist on the server.
* @return bool Always TRUE.
*/
public function gc($iMaxLifetime)
{
return true;
}
}
?>