From d90db771bcb93adb96dfef302c18f1f2d8b2a993 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Thu, 2 Jul 2009 19:21:11 +0000 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=B5=D1=88=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20file=5Fexists=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D0=BC=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9,=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=20=D0=BF=D1=80=D0=B8=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?memcache?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/engine/Engine.class.php | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/classes/engine/Engine.class.php b/classes/engine/Engine.class.php index cb6efcf8..4ccc398c 100644 --- a/classes/engine/Engine.class.php +++ b/classes/engine/Engine.class.php @@ -88,9 +88,9 @@ class Engine extends Object { protected function LoadModule($sModuleName,$bInit=false) { $tm1=microtime(true); $sPrefixSys=''; - if (file_exists(DIR_SERVER_ROOT."/classes/modules/".strtolower($sModuleName)."/".$sModuleName.".class.php")) { + if ($this->isFileExists(DIR_SERVER_ROOT."/classes/modules/".strtolower($sModuleName)."/".$sModuleName.".class.php")) { require_once(DIR_SERVER_ROOT."/classes/modules/".strtolower($sModuleName)."/".$sModuleName.".class.php"); - } elseif (file_exists(DIR_SERVER_ROOT."/classes/modules/sys_".strtolower($sModuleName)."/".$sModuleName.".class.php")) { + } elseif ($this->isFileExists(DIR_SERVER_ROOT."/classes/modules/sys_".strtolower($sModuleName)."/".$sModuleName.".class.php")) { require_once(DIR_SERVER_ROOT."/classes/modules/sys_".strtolower($sModuleName)."/".$sModuleName.".class.php"); $sPrefixSys='sys_'; } else { @@ -100,7 +100,7 @@ class Engine extends Object { * Проверяем наличие кастомного класса */ $sPrefixCustom=''; - if (file_exists(DIR_SERVER_ROOT."/classes/modules/".$sPrefixSys.strtolower($sModuleName)."/".$sModuleName.".class.custom.php")) { + if ($this->isFileExists(DIR_SERVER_ROOT."/classes/modules/".$sPrefixSys.strtolower($sModuleName)."/".$sModuleName.".class.custom.php")) { require_once(DIR_SERVER_ROOT."/classes/modules/".$sPrefixSys.strtolower($sModuleName)."/".$sModuleName.".class.custom.php"); $sPrefixCustom='_custom'; } @@ -109,7 +109,7 @@ class Engine extends Object { */ $sModuleNameClass='Ls'.$sModuleName.$sPrefixCustom; $oModule=new $sModuleNameClass($this); - if ($bInit) { + if ($bInit or $sModuleName=='Cache') { $oModule->Init(); } $this->aModules[$sModuleName]=$oModule; @@ -172,6 +172,26 @@ class Engine extends Object { closedir($hDir); } } + /** + * Проверяет файл на существование, если используется кеширование memcache то кеширует результат работы + * + * @param unknown_type $sFile + * @return unknown + */ + public function isFileExists($sFile,$iTime=3600) { + if (strpos($sFile,'/Cache.class.')!==false) { + return file_exists($sFile); + } + if (SYS_CACHE_USE and SYS_CACHE_TYPE==SYS_CACHE_TYPE_MEMORY) { + if (false === ($data = $this->Cache_Get("file_exists_{$sFile}"))) { + $data=file_exists($sFile); + $this->Cache_Set((int)$data, "file_exists_{$sFile}", array(), $iTime); + } + return $data; + } else { + return file_exists($sFile); + } + } /** * Вызывает метод нужного модуля *