%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/main/classes/general/ |
| Current File : //home/bitrix/www/bitrix/modules/main/classes/general/cache_xcache.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2013 Bitrix
*/
class CPHPCacheXCache implements ICacheBackend
{
var $sid = "";
//cache stats
var $written = false;
var $read = false;
function __construct()
{
$this->CPHPCacheXCache();
}
function CPHPCacheXCache()
{
if(defined("BX_CACHE_SID"))
$this->sid = BX_CACHE_SID;
else
$this->sid = "BX";
}
function IsAvailable()
{
return function_exists('xcache_get');
}
function clean($basedir, $initdir = false, $filename = false)
{
if(strlen($filename))
{
$basedir_version = xcache_get($this->sid.$basedir);
if($basedir_version === null)
return true;
if($initdir !== false)
{
$initdir_version = xcache_get($basedir_version."|".$initdir);
if($initdir_version === null)
return true;
}
else
{
$initdir_version = "";
}
xcache_unset($basedir_version."|".$initdir_version."|".$filename);
}
else
{
if(strlen($initdir))
{
$basedir_version = xcache_get($this->sid.$basedir);
if($basedir_version === null)
return true;
xcache_unset($basedir_version."|".$initdir);
}
else
{
xcache_unset($this->sid.$basedir);
}
}
return true;
}
function read(&$arAllVars, $basedir, $initdir, $filename, $TTL)
{
$basedir_version = xcache_get($this->sid.$basedir);
if($basedir_version === null)
return false;
if($initdir !== false)
{
$initdir_version = xcache_get($basedir_version."|".$initdir);
if($initdir_version === null)
return false;
}
else
{
$initdir_version = "";
}
$arAllVars = xcache_get($basedir_version."|".$initdir_version."|".$filename);
if($arAllVars === null)
{
return false;
}
else
{
$this->read = strlen($arAllVars);
$arAllVars = unserialize($arAllVars);
}
return true;
}
function write($arAllVars, $basedir, $initdir, $filename, $TTL)
{
$basedir_version = xcache_get($this->sid.$basedir);
if($basedir_version === null)
{
$basedir_version = md5(mt_rand());
if(!xcache_set($this->sid.$basedir, $basedir_version))
return;
}
if($initdir !== false)
{
$initdir_version = xcache_get($basedir_version."|".$initdir);
if($initdir_version === null)
{
$initdir_version = md5(mt_rand());
if(!xcache_set($basedir_version."|".$initdir, $initdir_version))
return;
}
}
else
{
$initdir_version = "";
}
$arAllVars = serialize($arAllVars);
$this->written = strlen($arAllVars);
xcache_set($basedir_version."|".$initdir_version."|".$filename, $arAllVars, intval($TTL));
}
function IsCacheExpired($path)
{
return false;
}
}