当前位置:首页 > CMS教程 > phpcms > 列表

【phpcms-v9】cache_all.php文件分析-更新缓存

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-22 17:03:19 浏览: 评论:0 

  1. <?php   
  2. //路径:phpcms/modules/admin/cache_all.php控制器,此控制器主要用来更新所有的缓存信息:   
  3. defined('IN_PHPCMS'or exit('No permission resources.');   
  4. pc_base::load_app_class('admin','admin',0);   
  5.    
  6. class cache_all extends admin {   
  7.     private $cache_api;   
  8.        
  9.     public function init() {   
  10.         if (isset($_POST['dosubmit']) || isset($_GET['dosubmit'])) {//会通过表单提交过来   
  11.             $page = $_GET['page'] ? intval($_GET['page']) : 0;      //$modules[]数组的索引   
  12.             $modules = array(   
  13.                 array('name' => L('module'), 'function' => 'module'),   
  14.                 array('name' => L('sites'), 'mod' => 'admin''file' => 'sites''function' => 'set_cache'),   
  15.                 array('name' => L('category'), 'function' => 'category'),   
  16.                 array('name' => L('downservers'), 'function' => 'downservers'),   
  17.                 array('name' => L('badword_name'), 'function' => 'badword'),   
  18.                 array('name' => L('ipbanned'), 'function' => 'ipbanned'),   
  19.                 array('name' => L('keylink'), 'function' => 'keylink'),   
  20.                 array('name' => L('linkage'), 'function' => 'linkage'),   
  21.                 array('name' => L('position'), 'function' => 'position'),   
  22.                 array('name' => L('admin_role'), 'function' => 'admin_role'),   
  23.                 array('name' => L('urlrule'), 'function' => 'urlrule'),   
  24.                 array('name' => L('sitemodel'), 'function' => 'sitemodel'),   
  25.                 array('name' => L('type'), 'function' => 'type''param' => 'content'),   
  26.                 array('name' => L('workflow'), 'function' => 'workflow'),   
  27.                 array('name' => L('dbsource'), 'function' => 'dbsource'),   
  28.                 array('name' => L('member_setting'), 'function' => 'member_setting'),   
  29.                 array('name' => L('member_group'), 'function' => 'member_group'),   
  30.                 array('name' => L('membermodel'), 'function' => 'membermodel'),   
  31.                 array('name' => L('member_model_field'), 'function' => 'member_model_field'),   
  32.                 array('name' => L('search_type'), 'function' => 'type''param' => 'search'),   
  33.                 array('name' => L('search_setting'), 'function' => 'search_setting'),   
  34.                 array('name' => L('update_vote_setting'), 'function' => 'vote_setting'),   
  35.                 array('name' => L('update_link_setting'), 'function' => 'link_setting'),   
  36.                 array('name' => L('special'), 'function' => 'special'),   
  37.                 array('name' => L('setting'), 'function' => 'setting'),   
  38.                 array('name' => L('database'), 'function' => 'database'),   
  39.                 array('name' => L('update_formguide_model'), 'mod' => 'formguide''file' => 'formguide''function' => 'public_cache'),   
  40.                 array('name' => L('cache_file'), 'function' => 'cache2database'),   
  41.                 array('name' => L('cache_copyfrom'), 'function' => 'copyfrom'),   
  42.                 array('name' => L('clear_files'), 'function' => 'del_file'),   
  43.             );   
  44.             $this->cache_api = pc_base::load_app_class('cache_api''admin');//加载admin模块下的classes/cache_api.class.php类库   
  45.             $m = $modules[$page];   
  46.             //如:array('name' => L('sites'), 'mod' => 'admin', 'file' => 'sites', 'function' => 'set_cache'),   
  47.             if ($m['mod'] && $m['function']) {   
  48.                 if ($m['file'] == ''$m['file'] = $m['function'];   
  49.                 //查看caches/caches_commons/caches_data/modules.class.php文件,对应后台 "模块管理" 中所有的模块   
  50.                 $M = getcache('modules''commons');   
  51.                 if (in_array($m['mod'], array_keys($M))) {//查看是否存在当前更新模块   
  52.                     //加载当前模块下的类库文件,如:admin模块下的classes/sites.class.php类库文件   
  53.                     $cache = pc_base::load_app_class($m['file'], $m['mod']);   
  54.                     //调用sites.class.php类库文件中的set_cache()方法,如:$cache->set_cache();   
  55.                     $cache->$m['function']();   
  56.                 }   
  57.             } else if($m['target']=='iframe') {//这段代码一般很少执行   
  58.                 echo '<script type="text/javascript">window.parent.frames["hidden"].location="index.php?'.$m['link'].'";</script>';   
  59.             } else {   
  60.                 /**   
  61.                  * 1.如:array('name' => L('type'), 'function' => 'type', 'param' => 'content'),更新类别缓存   
  62.                  * 2.如:会执行$this->cache_api->cache(type,content);   
  63.                  * 3.如:追踪发现,$this->cache_api->cache(type,content);方法会调用自身的type()方法来完成类别的更新   
  64.                  * 4.cache_api类中方法如下:   
  65.                  *      cache_site():更新站点缓存                  keylink():更新关联链接缓存   
  66.                  *      category() :更新栏目缓存                   linkage():更新联动菜单缓存   
  67.                  *      downservers ():更新下载服务器缓存             position ():更新推荐位缓存   
  68.                  *      badword():更新敏感词缓存                    vote_setting() :更新投票设置   
  69.                  *      ipbanned():更新ip禁止缓存                      link_setting():更新友情链接配置   
  70.                  *      admin_role():更新管理员角色缓存               urlrule():更新url规则缓存   
  71.                  *      module() :更新模块缓存                         sitemodel():更新模型缓存   
  72.                  *      sitemodel_field():更新模型字段缓存           type($param = ''):更新类别缓存   
  73.                  *      workflow() :更新工作流缓存                  dbsource() :更新数据源缓存   
  74.                  *      member_group():更新会员组缓存               member_setting():更新会员配置缓存   
  75.                  *      membermodel() :更新会员模型缓存              member_model_field():更新会员模型字段缓存   
  76.                  *      search_setting() :更新搜索配置缓存           search_type() :更新搜索类型缓存   
  77.                  *      special() :更新专题缓存                        setting():更新网站配置缓存   
  78.                  *      database():更新数据源模型缓存                 cache2database():根据数据库的记录更新缓存   
  79.                  *      del_file():更新删除缓存文件                  copyfrom():更新来源缓存   
  80.                  *    以上方法都统一的调用了setcache()方法进行缓存的更新   
  81.                  */   
  82.                 //如:array('name' => L('type'), 'function' => 'type', 'param' => 'content'),更新类别缓存   
  83.                 $this->cache_api->cache($m['function'], $m['param']);   
  84.             }   
  85.             $page++;//索引值自增   
  86.             if (!emptyempty($modules[$page])) {   
  87.                 /**   
  88.                  * 1.通过echo输出javascript代码的方式,调用模板文件中的addtext()方法,向<ul id="file" class="sbul"></ul>追加信息   
  89.                  * 如:<ul id="file" class="sbul">   
  90.                         <li>更新模块缓存完成..........</li>   
  91.                         <li>更新站点缓存完成..........</li>   
  92.                         <li>更新栏目缓存完成..........</li>   
  93.                         <li>更新下载服务器缓存完成..........</li>   
  94.                         <li>更新敏感词缓存完成..........</li>   
  95.                         <li>更新IP禁止缓存完成..........</li>   
  96.                        </ul>   
  97.                  *2.再跳转到if逻辑中   
  98.                  */   
  99.                 echo '<script type="text/javascript">window.parent.addtext("<li>'.L('update').$m['name'].L('cache_file_success').'..........</li>");</script>';   
  100.                 showmessage(L('update').$m['name'].L('cache_file_success'), '?m=admin&c=cache_all&page='.$page.'&dosubmit=1&pc_hash='.$_SESSION['pc_hash'], 0);   //phpfensi.com 
  101.             } else {   
  102.                 echo '<script type="text/javascript">window.parent.addtext("<li>'.L('update').$m['name'].L('site_cache_success').'..........</li>")</script>';   
  103.                 showmessage(L('update').$m['name'].L('site_cache_success'), 'blank');   
  104.             }   
  105.         } else {//点击    "更新缓存"  按钮时,会执行else代码   
  106.             /**   
  107.              * 1.点击    "更新缓存"  按钮时,默认执行的else里面的代码   
  108.              * 2.else里面就一行代码,此行代码主要为了显示模板文件   
  109.              * 3.模板文件加载完毕后会自动提交表单,如:document.myform.submit();   
  110.              * 4.表单中只有一个隐藏域表单,<input type="hidden" name="dosubmit" value="1">   
  111.              * 5.表单数据被提交给了<form action="?m=admin&c=cache_all&a=init ></form>,目的就是为了执行if里面的代码   
  112.              */   
  113.             include $this->admin_tpl('cache_all');   
  114.         }   
  115.     }   
  116. }   
  117. ?>  

模板文件:cache_all.tpl.php分析:

  1. <style type="text/css">   
  2.     .sbs{}   
  3.     .sbul{margin:10px;}   
  4.     .sbul li{line-height:30px;}   
  5.     .button{margin-top:20px;}   
  6.     .subnav,.ifm{display:none;}   
  7.        
  8. </style>   
  9. <?php   
  10. defined('IN_ADMIN') or exit('No permission resources.');   
  11. include $this->admin_tpl('header','admin');?>   
  12. <div class="pad-10">   
  13. <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">   
  14.   <input type="hidden" name="dosubmit" value="1">   
  15. <div class="col-2">   
  16. <h6><?php echo L('tip_zone');//提示区 ?></h6>   
  17. <div class="sbs" id="update_tips" style="height:360px; overflow:auto;">   
  18.     <ul id="file" class="sbul">   
  19.     <!--    
  20.     <li>更新模块缓存完成..........</li>   
  21.     <li>更新站点缓存完成..........</li>   
  22.     <li>更新栏目缓存完成..........</li>   
  23.     <li>更新下载服务器缓存完成..........</li>   
  24.     <li>更新敏感词缓存完成..........</li>   
  25.     <li>更新IP禁止缓存完成..........</li>   
  26.     <li>更新关联链接缓存完成..........</li>   
  27.     <li>更新联动菜单缓存完成..........</li>   
  28.     <li>更新推荐位缓存完成..........</li>   
  29.     <li>更新角色缓存完成..........</li>   
  30.     <li>更新url规则缓存完成..........</li>   
  31.     <li>更新模型缓存完成..........</li>   
  32.     <li>更新类别缓存完成..........</li>   
  33.     <li>更新工作流缓存完成..........</li>   
  34.     <li>更新数据源缓存完成..........</li>   
  35.     <li>更新会员模块配置缓存完成..........</li>   
  36.     <li>更新会员列表缓存完成..........</li>   
  37.     <li>更新会员模型缓存完成..........</li>   
  38.     <li>更新会员模型字段缓存完成..........</li>   
  39.     <li>更新全站搜索分类缓存完成..........</li>   
  40.     <li>更新全站搜索配置缓存完成..........</li>   
  41.     <li>更新更新投票模块配置缓存完成..........</li>   
  42.     <li>更新更新友情链接模块配置缓存完成..........</li>   
  43.     <li>更新专题缓存完成..........</li>   
  44.     <li>更新网站配置缓存完成..........</li>   
  45.     <li>更新数据源模型缓存完成..........</li>   
  46.     <li>更新更新表单向导模型缓存完成..........</li>   
  47.     <li>系统缓存文件更新中:1/2..........</li>   
  48.     <li>更新系统缓存文件缓存完成..........</li>   
  49.     <li>更新来源缓存完成..........</li>   
  50.     <li>更新清理文件缓存完成..........</li>   
  51.     <li style="color: red;">全站缓存更新成功..........</li>   
  52.      -->   
  53.     </ul>   
  54. </div>   
  55. </div>   
  56. <!-- <input name="dosubmit" type="submit" class="dialog" id="dosubmit" value="<?php echo L('start_update')?>" onclick="$('#file').html('');return true;" class="button"> -->   
  57. </form>   
  58. <iframe id="cache_if" name="cache_if" class="ifm"></iframe>   
  59. <iframe id="hidden" name="hidden"  width="0" height="0" frameborder=0></iframe>   
  60. </div>   
  61. <script type="text/javascript">   
  62. //自动提交表单   
  63. document.myform.submit();   
  64. //追加数据,如:<li>更新模块缓存完成..........</li>等,并改变一下提示区的高度   
  65. function addtext(data) {   
  66.     $('#file').append(data);   
  67.     document.getElementById('update_tips').scrollTop = document.getElementById('update_tips').scrollHeight;   
  68. }   
  69. </script>   
  70. </body>   
  71. </html>

Tags: phpcms缓存文件 phpcms更新缓存

分享到: