Your IP : 18.118.139.79


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/modules/main/classes/general/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/modules/main/classes/general/cache_eaccelerator.php

<?
class CPHPCacheEAccelerator implements ICacheBackend
{
	var $sid = "";
	//cache stats
	var $written = false;
	var $read = false;

	function __construct()
	{
		$this->CPHPCacheEAccelerator();
	}

	function CPHPCacheEAccelerator()
	{
		if(defined("BX_CACHE_SID"))
			$this->sid = BX_CACHE_SID;
		else
			$this->sid = "BX";
	}

	function IsAvailable()
	{
		return function_exists('eaccelerator_get');
	}

	function clean($basedir, $initdir = false, $filename = false)
	{
		if(strlen($filename))
		{
			$basedir_version = eaccelerator_get($this->sid.$basedir);
			if($basedir_version === null)
				return true;

			if($initdir !== false)
			{
				$initdir_version = eaccelerator_get($basedir_version."|".$initdir);
				if($initdir_version === null)
					return true;
			}
			else
			{
				$initdir_version = "";
			}

			eaccelerator_rm($basedir_version."|".$initdir_version."|".$filename);
		}
		else
		{
			if(strlen($initdir))
			{
				$basedir_version = eaccelerator_get($this->sid.$basedir);
				if($basedir_version === null)
					return true;

				eaccelerator_rm($basedir_version."|".$initdir);
			}
			else
			{
				eaccelerator_rm($this->sid.$basedir);
			}
		}
		return true;
	}

	function read(&$arAllVars, $basedir, $initdir, $filename, $TTL)
	{
		$basedir_version = eaccelerator_get($this->sid.$basedir);
		if($basedir_version === null)
			return false;

		if($initdir !== false)
		{
			$initdir_version = eaccelerator_get($basedir_version."|".$initdir);
			if($initdir_version === null)
				return false;
		}
		else
		{
			$initdir_version = "";
		}

		$arAllVars = eaccelerator_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 = eaccelerator_get($this->sid.$basedir);
		if($basedir_version === null)
		{
			$basedir_version = md5(mt_rand());
			if(!eaccelerator_put($this->sid.$basedir, $basedir_version))
				return;
		}

		if($initdir !== false)
		{
			$initdir_version = eaccelerator_get($basedir_version."|".$initdir);
			if($initdir_version === null)
			{
				$initdir_version = md5(mt_rand());
				if(!eaccelerator_put($basedir_version."|".$initdir, $initdir_version))
					return;
			}
		}
		else
		{
			$initdir_version = "";
		}

		$arAllVars = serialize($arAllVars);
		$this->written = strlen($arAllVars);

		eaccelerator_put($basedir_version."|".$initdir_version."|".$filename, $arAllVars, intval($TTL));
	}

	function IsCacheExpired($path)
	{
		return false;
	}
}
?>