用memcatche代替smarty的文件缓存 转
smarty可以通过cache_handler_func更改缓存方式,具体例子可以先看看官网:http://www.smarty.net/manual/en/section.template.cache.handler.func.php
function memcache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null, $exp_time=null){$use_gzip = false;// create unique cache id$CacheID = md5($tpl_file.$cache_id.$compile_id);$memcache = new Memcache;$memcache->addServer('192.168.56.201',11211); //根据你实际的memcache集群设定$memcache->addServer('192.168.56.202',11211);$memcache->addServer('192.168.56.203',11211);$memcache->addServer('192.168.56.204',11211);switch ($action) {case 'read':// get cache from memcache$getContents = $memcache->get($CacheID);if(!$getContents) {$smarty_obj->trigger_error("memcache_handler: get failed.");}if($use_gzip && function_exists("gzuncompress")) {$cache_contents = gzuncompress($getContents);} else {$cache_contents = $getContents;}$return = $getContents;break;case 'write':// save cache to memcacheif($use_gzip && function_exists("gzcompress")) {// compress the contents for storage efficiency$contents = gzcompress($cache_content);} else {$contents = $cache_content;}$writeContents = $memcache->set($CacheID,$contents);if(!$writeContents) {$smarty_obj->trigger_error("memcache_handler: set failed.");}$return = $writeContents;break;case 'clear':// clear cache infoif(empty($cache_id) && empty($compile_id) && empty($tpl_file)) {// clear them all$clearCache = $memcache->flush();} else {$clearCache = $memcache->delete($cache_id);}if(!$clearCache) {$smarty_obj->trigger_error("memcache_handler: clear failed.");}$return = $clearCache;break;default:// error, unknown action$smarty_obj->trigger_error("cache_handler: unknown action "$action"");$return = false;break;}return $return;}?