UCHome二次開發 快取機制解析

2021-08-30 14:30:22 字數 2058 閱讀 6568

uchome中的常用資料皆通過呼叫快取來實現讀取,包括系統配置、使用者組、群組欄目、使用者欄目、詞語遮蔽、積分規則、廣告、使用者嚮導任務、模組、myop預設應用等資訊。其中模板快取的使用前面單獨介紹過,見《【uchome二次開發】模板解析》。

uchome中常用資料是作為全域性變數來使用的,具體用法可參考《【uchome二次開發】全域性變數》。以下著重介紹快取機制的具體實現。

1、快取資料檔案的生成

uchome生成的快取資料檔案位於/data/目錄下。

* config_cache() 更新配置資訊快取,生成快取檔案data_config.php

* usergroup_cache() 更新使用者組快取,生成快取檔案data_usergroup.php

* profilefield_cache() 更新使用者欄目快取,生成快取檔案data_profilefield.php

* profield_cache() 更新群組欄目快取,生成快取檔案data_profield.php

* ******_cache() 更新詞語遮蔽快取,生成快取檔案data_******.php

* creditrule_cache() 更新積分規則,生成快取檔案data_creditrule.php

* ad_cache() 更新廣告快取,生成快取檔案data_ad.php

* task_cache() 更新使用者嚮導任務,生成快取檔案data_task.php

* block_cache() 更新模組,生成快取檔案data_block.php

* tpl_cache() 更新模板快取,清空模板快取資料夾/data/tpl_cache/下所有檔案使模板快取重新生成

* block_data_cache() 更新模組快取,清空模板快取資料使快取重新生成

除了模板和模組資料外,其他的只需呼叫對應的函式就可生成對應的快取資料檔案。具體快取生成的資料格式可檢視對應檔案。

2、快取資料檔案的分析

我們來看一下其中乙個快取檔案,群組欄目快取data_profield.php檔案,如下:

<?php

if(!defined('in_uchome')) exit('access denied');

$_sglobal['profield']=array

(1 => array

('fieldid' => 1,

'title' => '班級',

'formtype' => 'multi',

'inputnum' => 100,

'mtagminnum' => 0,

'manualmoderator' => 1,

'manualmember' => 1

)2 => array

('fieldid' => 2,

'title' => '實踐活動',

'formtype' => 'text',

'inputnum' => 100,

'mtagminnum' => 0,

'manualmoderator' => 1,

'manualmember' => 1))

?>

第二行**保證了緩衝資料無法被直接呼叫,而要求在uchome中才有效。當然這是君子協定,只要在呼叫**前define一下in_uchome即可繞過驗證。

之後的**其實只是做了變數賦值,將群組欄目資料賦值到$_sglobal['profield']中,因為之前$_sglobal以被定義為global全域性變數,因為群組欄目資料便能全域性訪問了。

3、快取資料檔案的使用

從上面分析可看出,快取資料檔案其實就是php**檔案,直接引入執行。因而我們的快取使用也就很方便了,只需將快取檔案使用include/include_once/require/require_once等函式引入進來即可使用,呼叫對應的變數來獲取快取的資料。

if(!@include_once(s_root.'./data/data_usergroup.php'))

呼叫不同的快取請更換對應的快取檔案和緩衝函式。

4、快取資料檔案的手動更新

在管理員成員的後台高階管理裡有一項是快取更新,可使用者手動更新快取,在系統全域性配置變動後建議手動做一次快取更新。

UCHome二次開發 模板修改

前一陣在做uchome的一些修改以滿足具體的應用,來做一點總結。涉及的修改都是些小功能或是介面的調整,所以主要涉及的是對於模板的修改,以下歸納一下過程和經驗。1 模板檔案定位 確定要修改的模板檔案這是第一步。方法一 url分析法。檢視 config.php,sc template 引數指示的是當前使...

uchome二次開發 ajax非同步提交資料

ajax可以有兩種方式實現非同步提交,一種是get,另一種是post,在uchome中均有簡單實現方法.第一.先說get方式,呼叫真是非常的容易 var x new xml x.get url,function s 處理返回乙個xml或者html格式資料,再用自己用js控制顯示資料。這裡要說的是uc...

postek二次開發 POSTEK二次開發介面

例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...