為了獲取更多最新內(nèi)容及功能更新,請(qǐng)直接訪問(wèn)我們的首頁(yè)以查看DzzOffice筆記的最新地址。
DzzOffice支持兩種緩存機(jī)制:內(nèi)存緩存和內(nèi)置緩存。通過(guò)配置緩存,可以極大的提高DzzOffice的并發(fā)和承載能力。
在系統(tǒng)配置文件/config/config.php中,存在以下一行代碼:
$_config['cache']['type'] = 'sql';
這就是DzzOffice系統(tǒng)內(nèi)置的緩存方式,如填寫為'sql',則使用數(shù)據(jù)庫(kù)緩存;如填寫為'file',則使用文件緩存。建議設(shè)置為'sql'以使用數(shù)據(jù)庫(kù)緩存,因?yàn)槠渌俣认噍^于文件緩存更快。當(dāng)這個(gè)配置改成'file'時(shí),系統(tǒng)生成的緩存將被寫入文件中。緩存文件存儲(chǔ)在"/data/cache"目錄下。當(dāng)服務(wù)器承受較高M(jìn)ySQL壓力時(shí),可通過(guò)file的文件緩存機(jī)制緩解MySQL的壓力,通過(guò)服務(wù)器IO換取MySQL的讀寫頻率,降低MySQL的壓力。
緩存的工作原理:
在開發(fā)過(guò)程中,當(dāng)調(diào)用緩存時(shí),只需確認(rèn)所需的緩存名稱,然后調(diào)用
loadcache($cachenames, $force)
即可獲取先前保存的緩存內(nèi)容。
引入緩存層的目的是為了解決MYSQL自身在高并發(fā)處理方面的性能瓶頸。目前,緩存層采用主流的Key-Value對(duì)形式。市場(chǎng)上有很多內(nèi)存級(jí)緩存產(chǎn)品。DzzOffice目前支持的內(nèi)存優(yōu)化接口包括Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache和Redis五種。系統(tǒng)將根據(jù)當(dāng)前服務(wù)器環(huán)境依次選擇合適的接口。在單服務(wù)器環(huán)境中,推薦使用APC;在多服務(wù)器環(huán)境中,推薦使用Redis或Memcache。緩存可以通過(guò)配置/config/config.php來(lái)啟用,配置選項(xiàng)如下:
$_config['memory']['prefix'] = 'dzzoffice_';
$_config['memory']['redis']['server'] = ''; // redis 服務(wù)器地址
$_config['memory']['redis']['port'] = 6379; // redis 服務(wù)器端口
$_config['memory']['redis']['pconnect'] = 1; // redis 是否長(zhǎng)久連接
$_config['memory']['redis']['timeout'] = 0; // redis 服務(wù)器連接超時(shí)
$_config['memory']['redis']['serializer'] = 1; // redis::SERIALIZER選項(xiàng)
$_config['memory']['memcache']['server'] = ''; // memcache 服務(wù)器地址
$_config['memory']['memcache']['port'] = 11211; // memcache 服務(wù)器端口
$_config['memory']['memcache']['pconnect'] = 1; // memcache 是否長(zhǎng)久連接
$_config['memory']['memcache']['timeout'] = 1; // memcache 服務(wù)器連接超時(shí)
$_config['memory']['apc'] = 0; // 啟動(dòng)對(duì) apc 的支持
$_config['memory']['xcache'] = 0; // 啟動(dòng)對(duì) xcache 的支持
$_config['memory']['eaccelerator'] = 0; // 啟動(dòng)對(duì) eaccelerator 的支持
數(shù)據(jù)層是以表為單位的類文件,所有表類均繼承自dzz_table基類,基類實(shí)現(xiàn)了與緩存操作相關(guān)的函數(shù)。理論上,所有數(shù)據(jù)表均可進(jìn)行緩存。
protected $_pre_cache_key; //緩存主鍵名前綴,為空時(shí)表示此表不支持緩存
protected $_cache_ttl; //緩存時(shí)間,以秒為單位,0表示永久或相關(guān)配置文件中的默認(rèn)值
store_cache($id, $data, $cache_ttl = null, $pre_cache_key = null)
fetch_cache($ids, $pre_cache_key = null)
clear_cache($ids, $pre_cache_key = null)
update_cache($id, $data, $cache_ttl = null, $pre_cache_key = null)
update_batch_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null)
reset_cache($ids, $pre_cache_key = null)
increase_cache($ids, $data, $cache_ttl = null, $pre_cache_key = null)
public function __construct() {
$this->_table = 'app_open';
$this->_pk = 'extid';
$this->_pre_cache_key = 'app_open_'; //緩存主鍵名前綴,為空時(shí)表示此表不支持緩存
$this->_cache_ttl =0; //緩存時(shí)間,以秒為單位,0表示永久或相關(guān)配置文件中的默認(rèn)值
parent::__construct();
}
更多建議: