- <?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')?>" οnclick="$('#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>
來源:http://blog.csdn.net/yanhui_wei/article/details/7905000