| Current Path : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/classes/general/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/classes/general/cache_memcache.php |
<?
global $BX_MEMCACHE;
$BX_MEMCACHE = false;
class CPHPCacheMemcache
{
var $sid = "";
function __construct()
{
$this->CPHPCacheMemcache();
}
function CPHPCacheMemcache()
{
global $BX_MEMCACHE;
if(!is_object($BX_MEMCACHE))
$BX_MEMCACHE = new Memcache;
if(defined("BX_MEMCACHE_PORT"))
$port = intval(BX_MEMCACHE_PORT);
else
$port = 11211;
if($BX_MEMCACHE->connect(BX_MEMCACHE_HOST, $port))
define("BX_MEMCACHE_CONNECTED", true);
if(defined("BX_CACHE_SID"))
$this->sid = BX_CACHE_SID;
else
$this->sid = "BX";
}
function IsAvailable()
{
return defined("BX_MEMCACHE_CONNECTED");
}
function clean($basedir, $initdir = false, $filename = false)
{
global $BX_MEMCACHE;
//echo implode("|", array("clean",$this->sid,$basedir,$initdir,$filename,"<br>"));
if(is_object($BX_MEMCACHE))
{
if(strlen($filename))
{
$basedir_version = $BX_MEMCACHE->get($this->sid.$basedir);
if($basedir_version === false)
return true;
if($initdir !== false)
{
$initdir_version = $BX_MEMCACHE->get($basedir_version."|".$initdir);
if($initdir_version === false)
return true;
}
else
{
$initdir_version = "";
}
$BX_MEMCACHE->delete($basedir_version."|".$initdir_version."|".$filename);
}
else
{
if(strlen($initdir))
{
$basedir_version = $BX_MEMCACHE->get($this->sid.$basedir);
if($basedir_version === false)
return true;
$BX_MEMCACHE->delete($basedir_version."|".$initdir);
}
else
{
//echo "delete",$this->sid.$basedir,"<hr>";
$BX_MEMCACHE->delete($this->sid.$basedir);
}
}
return true;
}
return false;
}
function read(&$arAllVars, $basedir, $initdir, $filename, $TTL)
{
global $BX_MEMCACHE;
//echo implode("|", array("read",$this->sid,$basedir,$initdir,$filename,"<br>"));
$basedir_version = $BX_MEMCACHE->get($this->sid.$basedir);
if($basedir_version === false)
return false;
if($initdir !== false)
{
$initdir_version = $BX_MEMCACHE->get($basedir_version."|".$initdir);
if($initdir_version === false)
return false;
}
else
{
$initdir_version = "";
}
$arAllVars = $BX_MEMCACHE->get($basedir_version."|".$initdir_version."|".$filename);
if($arAllVars === false)
return false;
return true;
}
function write($arAllVars, $basedir, $initdir, $filename, $TTL)
{
global $BX_MEMCACHE;
//echo implode("|", array("write",$this->sid,$basedir,$initdir,$filename,"<br>"));
$basedir_version = $BX_MEMCACHE->get($this->sid.$basedir);
if($basedir_version === false)
{
$basedir_version = md5(mt_rand());
$BX_MEMCACHE->set($this->sid.$basedir, $basedir_version);
}
if($initdir !== false)
{
$initdir_version = $BX_MEMCACHE->get($basedir_version."|".$initdir);
if($initdir_version === false)
{
$initdir_version = md5(mt_rand());
$BX_MEMCACHE->set($basedir_version."|".$initdir, $initdir_version);
}
}
else
{
$initdir_version = "";
}
$BX_MEMCACHE->set($basedir_version."|".$initdir_version."|".$filename, $arAllVars, 0, time()+intval($TTL));
}
function IsCacheExpired($path)
{
return false;
}
}
?>