【phpcms-v9】cache_all.php文件分析-更新缓存
2012-08-24 17:48
302 查看
![](http://my.csdn.net/uploads/201208/24/1345802325_9115.jpg)
<?php //路径:phpcms/modules/admin/cache_all.php控制器,此控制器主要用来更新所有的缓存信息: defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); class cache_all extends admin { private $cache_api; public function init() { if (isset($_POST['dosubmit']) || isset($_GET['dosubmit'])) {//会通过表单提交过来 $page = $_GET['page'] ? intval($_GET['page']) : 0; //$modules[]数组的索引 $modules = array( array('name' => L('module'), 'function' => 'module'), array('name' => L('sites'), 'mod' => 'admin', 'file' => 'sites', 'function' => 'set_cache'), array('name' => L('category'), 'function' => 'category'), array('name' => L('downservers'), 'function' => 'downservers'), array('name' => L('badword_name'), 'function' => 'badword'), array('name' => L('ipbanned'), 'function' => 'ipbanned'), array('name' => L('keylink'), 'function' => 'keylink'), array('name' => L('linkage'), 'function' => 'linkage'), array('name' => L('position'), 'function' => 'position'), array('name' => L('admin_role'), 'function' => 'admin_role'), array('name' => L('urlrule'), 'function' => 'urlrule'), array('name' => L('sitemodel'), 'function' => 'sitemodel'), array('name' => L('type'), 'function' => 'type', 'param' => 'content'), array('name' => L('workflow'), 'function' => 'workflow'), array('name' => L('dbsource'), 'function' => 'dbsource'), array('name' => L('member_setting'), 'function' => 'member_setting'), array('name' => L('member_group'), 'function' => 'member_group'), array('name' => L('membermodel'), 'function' => 'membermodel'), array('name' => L('member_model_field'), 'function' => 'member_model_field'), array('name' => L('search_type'), 'function' => 'type', 'param' => 'search'), array('name' => L('search_setting'), 'function' => 'search_setting'), array('name' => L('update_vote_setting'), 'function' => 'vote_setting'), array('name' => L('update_link_setting'), 'function' => 'link_setting'), array('name' => L('special'), 'function' => 'special'), array('name' => L('setting'), 'function' => 'setting'), array('name' => L('database'), 'function' => 'database'), array('name' => L('update_formguide_model'), 'mod' => 'formguide', 'file' => 'formguide', 'function' => 'public_cache'), array('name' => L('cache_file'), 'function' => 'cache2database'), array('name' => L('cache_copyfrom'), 'function' => 'copyfrom'), array('name' => L('clear_files'), 'function' => 'del_file'), ); $this->cache_api = pc_base::load_app_class('cache_api', 'admin');//加载admin模块下的classes/cache_api.class.php类库 $m = $modules[$page]; //如:array('name' => L('sites'), 'mod' => 'admin', 'file' => 'sites', 'function' => 'set_cache'), if ($m['mod'] && $m['function']) { if ($m['file'] == '') $m['file'] = $m['function']; //查看caches/caches_commons/caches_data/modules.class.php文件,对应后台 "模块管理" 中所有的模块 $M = getcache('modules', 'commons'); if (in_array($m['mod'], array_keys($M))) {//查看是否存在当前更新模块 //加载当前模块下的类库文件,如:admin模块下的classes/sites.class.php类库文件 $cache = pc_base::load_app_class($m['file'], $m['mod']); //调用sites.class.php类库文件中的set_cache()方法,如:$cache->set_cache(); $cache->$m['function'](); } } else if($m['target']=='iframe') {//这段代码一般很少执行 echo '<script type="text/javascript">window.parent.frames["hidden"].location="index.php?'.$m['link'].'";</script>'; } else { /** * 1.如:array('name' => L('type'), 'function' => 'type', 'param' => 'content'),更新类别缓存 * 2.如:会执行$this->cache_api->cache(type,content); * 3.如:追踪发现,$this->cache_api->cache(type,content);方法会调用自身的type()方法来完成类别的更新 * 4.cache_api类中方法如下: * cache_site():更新站点缓存 keylink():更新关联链接缓存 * category() :更新栏目缓存 linkage():更新联动菜单缓存 * downservers ():更新下载服务器缓存 position ():更新推荐位缓存 * badword():更新敏感词缓存 vote_setting() :更新投票设置 * ipbanned():更新ip禁止缓存 link_setting():更新友情链接配置 * admin_role():更新管理员角色缓存 urlrule():更新url规则缓存 * module() :更新模块缓存 sitemodel():更新模型缓存 * sitemodel_field():更新模型字段缓存 type($param = ''):更新类别缓存 * workflow() :更新工作流缓存 dbsource() :更新数据源缓存 * member_group():更新会员组缓存 member_setting():更新会员配置缓存 * membermodel() :更新会员模型缓存 member_model_field():更新会员模型字段缓存 * search_setting() :更新搜索配置缓存 search_type() :更新搜索类型缓存 * special() :更新专题缓存 setting():更新网站配置缓存 * database():更新数据源模型缓存 cache2database():根据数据库的记录更新缓存 * del_file():更新删除缓存文件 copyfrom():更新来源缓存 * 以上方法都统一的调用了setcache()方法进行缓存的更新 */ //如:array('name' => L('type'), 'function' => 'type', 'param' => 'content'),更新类别缓存 $this->cache_api->cache($m['function'], $m['param']); } $page++;//索引值自增 if (!empty($modules[$page])) { /** * 1.通过echo输出javascript代码的方式,调用模板文件中的addtext()方法,向<ul id="file" class="sbul"></ul>追加信息 * 如:<ul id="file" class="sbul"> <li>更新模块缓存完成..........</li> <li>更新站点缓存完成..........</li> <li>更新栏目缓存完成..........</li> <li>更新下载服务器缓存完成..........</li> <li>更新敏感词缓存完成..........</li> <li>更新IP禁止缓存完成..........</li> </ul> *2.再跳转到if逻辑中 */ echo '<script type="text/javascript">window.parent.addtext("<li>'.L('update').$m['name'].L('cache_file_success').'..........</li>");</script>'; showmessage(L('update').$m['name'].L('cache_file_success'), '?m=admin&c=cache_all&page='.$page.'&dosubmit=1&pc_hash='.$_SESSION['pc_hash'], 0); } else { echo '<script type="text/javascript">window.parent.addtext("<li>'.L('update').$m['name'].L('site_cache_success').'..........</li>")</script>'; showmessage(L('update').$m['name'].L('site_cache_success'), 'blank'); } } else {//点击 "更新缓存" 按钮时,会执行else代码 /** * 1.点击 "更新缓存" 按钮时,默认执行的else里面的代码 * 2.else里面就一行代码,此行代码主要为了显示模板文件 * 3.模板文件加载完毕后会自动提交表单,如:document.myform.submit(); * 4.表单中只有一个隐藏域表单,<input type="hidden" name="dosubmit" value="1"> * 5.表单数据被提交给了<form action="?m=admin&c=cache_all&a=init ></form>,目的就是为了执行if里面的代码 */ include $this->admin_tpl('cache_all'); } } } ?>
模板文件:cache_all.tpl.php分析:
<style type="text/css"> .sbs{} .sbul{margin:10px;} .sbul li{line-height:30px;} .button{margin-top:20px;} .subnav,.ifm{display:none;} </style> <?php defined('IN_ADMIN') or exit('No permission resources.'); include $this->admin_tpl('header','admin');?> <div class="pad-10"> <form action="?m=admin&c=cache_all&a=init&pc_hash=<?php echo $_SESSION['pc_hash']?>" target="cache_if" method="post" id="myform" name="myform"> <input type="hidden" name="dosubmit" value="1"> <div class="col-2"> <h6><?php echo L('tip_zone');//提示区 ?></h6> <div class="sbs" id="update_tips" style="height:360px; overflow:auto;"> <ul id="file" class="sbul"> <!-- <li>更新模块缓存完成..........</li> <li>更新站点缓存完成..........</li> <li>更新栏目缓存完成..........</li> <li>更新下载服务器缓存完成..........</li> <li>更新敏感词缓存完成..........</li> <li>更新IP禁止缓存完成..........</li> <li>更新关联链接缓存完成..........</li> <li>更新联动菜单缓存完成..........</li> <li>更新推荐位缓存完成..........</li> <li>更新角色缓存完成..........</li> <li>更新url规则缓存完成..........</li> <li>更新模型缓存完成..........</li> <li>更新类别缓存完成..........</li> <li>更新工作流缓存完成..........</li> <li>更新数据源缓存完成..........</li> <li>更新会员模块配置缓存完成..........</li> <li>更新会员列表缓存完成..........</li> <li>更新会员模型缓存完成..........</li> <li>更新会员模型字段缓存完成..........</li> <li>更新全站搜索分类缓存完成..........</li> <li>更新全站搜索配置缓存完成..........</li> <li>更新更新投票模块配置缓存完成..........</li> <li>更新更新友情链接模块配置缓存完成..........</li> <li>更新专题缓存完成..........</li> <li>更新网站配置缓存完成..........</li> <li>更新数据源模型缓存完成..........</li> <li>更新更新表单向导模型缓存完成..........</li> <li>系统缓存文件更新中:1/2..........</li> <li>更新系统缓存文件缓存完成..........</li> <li>更新来源缓存完成..........</li> <li>更新清理文件缓存完成..........</li> <li style="color: red;">全站缓存更新成功..........</li> --> </ul> </div> </div> <!-- <input name="dosubmit" type="submit" class="dialog" id="dosubmit" value="<?php echo L('start_update')?>" onclick="$('#file').html('');return true;" class="button"> --> </form> <iframe id="cache_if" name="cache_if" class="ifm"></iframe> <iframe id="hidden" name="hidden" width="0" height="0" frameborder=0></iframe> </div> <script type="text/javascript"> //自动提交表单 document.myform.submit(); //追加数据,如:<li>更新模块缓存完成..........</li>等,并改变一下提示区的高度 function addtext(data) { $('#file').append(data); document.getElementById('update_tips').scrollTop = document.getElementById('update_tips').scrollHeight; } </script> </body> </html>
相关文章推荐
- 【phpcms-v9】cache_all.php文件分析-更新缓存
- 【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤
- 【phpcms-v9】专题模块前端控制器index.php文件分析
- 【phpcms-v9】phpcms-v9中model.class.php文件分析
- 【phpcms-v9】专题模块后台控制器special.php文件分析-添加专题
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】phpcms-v9中url路由规则文件分析:phpcms/libs/classes/param.class.php
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】专题模块前端控制器index.php文件分析
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】category.php文件分析-添加栏目
- 【phpcms-v9】index.php文件分析-前台列表页代码分析
- 【phpcms-v9】index.php文件分析-前台首页模板文件的解析过程分析
- 【phpcms-v9】model.class.php文件分析-数据模型的基类
- 【phpcms-v9】前台content模块控制器index.php文件分析-内容详情页代码分析
- 【phpcms-v9】phpcms-v9数据源调用的控制器文件分析phpcms/modules/dbsource/call.php
- 【phpcms-v9】index.php文件分析-前台首页模板文件的解析过程分析
- 【phpcms-v9】index.php文件分析-前台列表页代码分析
- 【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤