生成zend cache ID 用于清除指定的zend cache page.
来源:互联网 发布:unity3d 场景如何制作 编辑:程序博客网 时间:2024/05/21 11:29
/* * 使用方法,清除对'/zhidao/?page=1&id=2'的缓存。 Zend_Loader::loadClass('Custom_Cacheid'); $cacheId=Custom_Cacheid::makeId('/zhidao/?page=1&id=2',Config::$cacheOptions); $GLOBALS['cache']->remove($cacheId); */class Custom_Cacheid{ static $Get=NULL; static $Post=NULL; static $Session=NULL; static $Cookie=NULL; /** * 根据提供的url,及缓存选项(本系统中是Config::$cacheOptions)返回缓存的id * 通过设置$param来改变$_GET,$_POST,$_COOKIE,$_SESSION值, 例如: $param = array( 'Post'=>array('id'=>1,'page'=>1) ); 表示设定$_POST参数为array('id'=>1,'page'=>1)。 注意:get参数是自动根据url获取的 注意:$url 中 ? 后的get参数不能错误比如 ?a==&page=1;str2arr只是一个简单的函数,它可能与php分析方法不同,导致不能取得正确的id */ static public function makeId($url, $activeOptions, $param=array()) { foreach($param as $key=>$value){ self::$$key = $value; } if(strpos($url,'?')!==false){ self::$Get = self::str2arr(substr($url,strpos($url,'?'))); } $tmp = $url; foreach (array('Get', 'Post', 'Session', 'Files', 'Cookie') as $arrayName) { $tmp2 = self::_makePartialId( $arrayName, isset($activeOptions['cache_with_' . strtolower($arrayName) . '_variables'])?$activeOptions['cache_with_' . strtolower($arrayName) . '_variables']:false, isset($activeOptions['make_id_with_' . strtolower($arrayName) . '_variables'])?$activeOptions['make_id_with_' . strtolower($arrayName) . '_variables']:true ); if ($tmp2===false) { return false; } $tmp = $tmp . $tmp2; } return md5($tmp); }
/** * Make a partial id depending on options * * @param string $arrayName Superglobal array name * @param bool $bool1 If true, cache is still on even if there are some variables in the superglobal array * @param bool $bool2 If true, we have to use the content of the superglobal array to make a partial id * @return mixed|false Partial id (string) or false if the cache should have not to be used */ private static function _makePartialId($arrayName, $bool1, $bool2) { switch ($arrayName) { case 'Get': $var = !empty(self::$Get)?self::$Get:$_GET; break; case 'Post': $var = !empty(self::$Post)?self::$Post:$_POST; break; case 'Session': if(!empty(self::$Session)){ $var = self::$Session; }else{ if (isset($_SESSION)) { $var = $_SESSION; } else { $var = null; } } break; case 'Cookie': if(!empty(self::$Cookie)){ $var = self::$Cookie; }else{ if (isset($_COOKIE)) { $var = $_COOKIE; } else { $var = null; } } break; case 'Files': $var = $_FILES; break; default: return false; } if ($bool1) { if ($bool2) { return serialize($var); } return ''; } if (count($var) > 0) { echo $arrayName.'<hr>'; return false; } return ''; } /* * 把字符串转换成数组 例如传入 ?page=1&id=1 将返回array('page'=>1,'id'=>1) */ static function str2arr($str){ $str=preg_replace("/^/?/","",$str); $tmp=split("&",$str); $return=array(); foreach($tmp as $t){ $string = split("=",$t); if(count($string)==2){ $return[$string[0]] = $string[1]; } } return $return; }}
Config::$cacheOptions
static $cacheOptions = array( 'cache' => true, 'cache_with_get_variables' => true, //当有get变量时也进行缓存 'cache_with_post_variables' => false, //当有post变量时不进行缓存 'cache_with_cookie_variables' => true, //当有cookie变量时也进行缓存 'cache_with_session_variables' => true, //当有session变量时也进行缓存 'make_id_with_cookie_variables' => false, 'make_id_with_session_variables' => false, 'make_id_with_post_variables' => false, 'make_id_with_files_variables' => false, 'make_id_with_get_variables' => true );
- 生成zend cache ID 用于清除指定的zend cache page.
- Zend Cache 小例子
- Zend Framework2 - Cache 用法
- Zend Cache 用法的一个例子.
- Zend Cache 用法的一个例子.
- zend cache使用中注意事项
- 关于Zend ID的生成方法
- sqlite的page cache
- page cache的感想
- buffer cache和page cache的区别
- linux 的page cache 和buffer cache
- page cache 和 buffer cache的区别
- Buffer cache和page cache的区别
- Buffer cache和page cache的区别
- page cache和buffer cache的关系
- page cache
- Page.Cache
- page cache
- Oracle SYS口令深入解析
- 初学ajax
- 使用moss UserProfileManager注意事项
- 设置双网卡同时访问内外网
- IE浏览器下CSS不能在UTF-8页面正常显示的问题
- 生成zend cache ID 用于清除指定的zend cache page.
- 30个健康生活的守则
- 关于管理的经典故事(员工激励)
- SAP TABLE
- Linux初学者Patch使用指南
- 程序乃是对需求的诠释
- [原创]最新javascript自动按比例显示图片,按比例压缩图片显示
- JavaScript中支持面向对象的基础
- 解密IBM64%SOA市场份额 SOA支持体系功不可没