PHP中文件緩存轉(zhuǎn)內(nèi)存緩存的方法
更新時(shí)間:2011年12月06日 01:07:48 作者:
顧名思義文件緩存轉(zhuǎn)內(nèi)存緩存就是將存儲(chǔ)在文件中的數(shù)據(jù)轉(zhuǎn)到內(nèi)存中去,實(shí)現(xiàn)磁盤操作轉(zhuǎn)為內(nèi)存操作,這樣可以大大提高數(shù)據(jù)訪問速度,并能實(shí)現(xiàn)緩存數(shù)據(jù)的分布式部署。文件緩存與內(nèi)存緩存的介紹請參考名詞解釋部分
前言
顧名思義文件緩存轉(zhuǎn)內(nèi)存緩存就是將存儲(chǔ)在文件中的數(shù)據(jù)轉(zhuǎn)到內(nèi)存中去,實(shí)現(xiàn)磁盤操作轉(zhuǎn)為內(nèi)存操作,這樣可以大大提高數(shù)據(jù)訪問速度,并能實(shí)現(xiàn)緩存數(shù)據(jù)的分布式部署。文件緩存與內(nèi)存緩存的介紹請參考名詞解釋部分。
原理
文件緩存轉(zhuǎn)內(nèi)存緩存的原理就是把文件緩存中的數(shù)據(jù)轉(zhuǎn)存到內(nèi)存中,以實(shí)現(xiàn)數(shù)據(jù)全局共享,解決頻繁加載文件和裝載數(shù)據(jù)的問題,采用Memcache工具實(shí)現(xiàn)內(nèi)存緩存數(shù)據(jù)。
實(shí)現(xiàn)機(jī)制與步驟
1,檢查文件是否存在內(nèi)存緩存,如果不存在加載緩存文件
2,加載緩存文件,并獲取緩存文件中的數(shù)據(jù)
3,將緩存文件中的數(shù)據(jù)寫入內(nèi)存
4,從內(nèi)存中獲取數(shù)據(jù),并將數(shù)據(jù)注冊為全局變量
5,返回?cái)?shù)據(jù)
這個(gè)過程中最主要處理兩個(gè)問題,第一個(gè)問題是緩存文件加載,如果要實(shí)現(xiàn)文件緩存轉(zhuǎn)內(nèi)存緩存,就需要有一個(gè)統(tǒng)一的文件緩存路徑調(diào)度服務(wù),用于實(shí)現(xiàn)文件是否實(shí)現(xiàn)內(nèi)存緩存機(jī)制。第二個(gè)問題是如何注冊全局變量,不管是從文件中獲取數(shù)據(jù)還是內(nèi)存中獲取,如果需要實(shí)現(xiàn)通用,就需要有一個(gè)注冊全局變量的機(jī)制。
文件緩存路徑調(diào)度服務(wù)這個(gè)問題實(shí)現(xiàn)比較簡單,但成本比較高,因?yàn)樾枰貥?gòu)現(xiàn)在的文件緩存加載路徑方式。
普通的文件緩存加載方式
require 'cache/config.php';
文件緩存路徑調(diào)度方式
require getCachePath('cache/config.php');
上例中g(shù)etCachePath()函數(shù)實(shí)現(xiàn)文件緩存路徑調(diào)度服務(wù)。
其次是注冊全局變量問題,需要考慮到數(shù)據(jù)的全局通用性,因此在使用上就有很多的注意事項(xiàng),經(jīng)過研究發(fā)現(xiàn)如下兩種注冊全局變量方式
1,循環(huán)注冊
foreach ( $vars as $k => $v ) {
$GLOBALS[$k] = $v;
}
優(yōu)點(diǎn):重復(fù)鍵的情況下可保證最新的值正常
缺點(diǎn):$vars數(shù)組的大小決定執(zhí)行時(shí)間
2,直接追加
$GLOBALS += $vars;
優(yōu)點(diǎn):無循環(huán),直接操作
缺點(diǎn):如果鍵存在則不能寫入
總結(jié)
文件緩存轉(zhuǎn)內(nèi)存緩存最主要處理文件加載方式與全局變量注冊,在實(shí)際的應(yīng)用過程中,要特別注意各緩存文件中變量名的不同,如果變量名存在相同,則可能在多個(gè)文件加載過程中造成數(shù)據(jù)覆蓋。
在具體的開發(fā)實(shí)踐中,能使用內(nèi)存緩存則直接使用內(nèi)存緩存,同時(shí)如果存在大量文件緩存加載的情況下,考慮實(shí)現(xiàn)文件緩存轉(zhuǎn)內(nèi)存緩存的機(jī)制。
名詞解釋
文件緩存是指將從數(shù)據(jù)庫獲取的數(shù)據(jù)存入文件中,這樣下一次獲取數(shù)據(jù)的時(shí)候就不需要從數(shù)據(jù)庫獲取而直接從文件中獲取,這樣就能夠提升數(shù)據(jù)的訪問速度,因此在很多的開源程序代碼中都能看文件緩存的應(yīng)用。
內(nèi)存緩存是指將從數(shù)據(jù)庫獲取的數(shù)據(jù)存入內(nèi)存中,目前應(yīng)用比較廣泛的如Memcache。
顧名思義文件緩存轉(zhuǎn)內(nèi)存緩存就是將存儲(chǔ)在文件中的數(shù)據(jù)轉(zhuǎn)到內(nèi)存中去,實(shí)現(xiàn)磁盤操作轉(zhuǎn)為內(nèi)存操作,這樣可以大大提高數(shù)據(jù)訪問速度,并能實(shí)現(xiàn)緩存數(shù)據(jù)的分布式部署。文件緩存與內(nèi)存緩存的介紹請參考名詞解釋部分。
原理
文件緩存轉(zhuǎn)內(nèi)存緩存的原理就是把文件緩存中的數(shù)據(jù)轉(zhuǎn)存到內(nèi)存中,以實(shí)現(xiàn)數(shù)據(jù)全局共享,解決頻繁加載文件和裝載數(shù)據(jù)的問題,采用Memcache工具實(shí)現(xiàn)內(nèi)存緩存數(shù)據(jù)。
實(shí)現(xiàn)機(jī)制與步驟
1,檢查文件是否存在內(nèi)存緩存,如果不存在加載緩存文件
2,加載緩存文件,并獲取緩存文件中的數(shù)據(jù)
3,將緩存文件中的數(shù)據(jù)寫入內(nèi)存
4,從內(nèi)存中獲取數(shù)據(jù),并將數(shù)據(jù)注冊為全局變量
5,返回?cái)?shù)據(jù)
這個(gè)過程中最主要處理兩個(gè)問題,第一個(gè)問題是緩存文件加載,如果要實(shí)現(xiàn)文件緩存轉(zhuǎn)內(nèi)存緩存,就需要有一個(gè)統(tǒng)一的文件緩存路徑調(diào)度服務(wù),用于實(shí)現(xiàn)文件是否實(shí)現(xiàn)內(nèi)存緩存機(jī)制。第二個(gè)問題是如何注冊全局變量,不管是從文件中獲取數(shù)據(jù)還是內(nèi)存中獲取,如果需要實(shí)現(xiàn)通用,就需要有一個(gè)注冊全局變量的機(jī)制。
文件緩存路徑調(diào)度服務(wù)這個(gè)問題實(shí)現(xiàn)比較簡單,但成本比較高,因?yàn)樾枰貥?gòu)現(xiàn)在的文件緩存加載路徑方式。
普通的文件緩存加載方式
require 'cache/config.php';
文件緩存路徑調(diào)度方式
require getCachePath('cache/config.php');
上例中g(shù)etCachePath()函數(shù)實(shí)現(xiàn)文件緩存路徑調(diào)度服務(wù)。
其次是注冊全局變量問題,需要考慮到數(shù)據(jù)的全局通用性,因此在使用上就有很多的注意事項(xiàng),經(jīng)過研究發(fā)現(xiàn)如下兩種注冊全局變量方式
1,循環(huán)注冊
復(fù)制代碼 代碼如下:
foreach ( $vars as $k => $v ) {
$GLOBALS[$k] = $v;
}
優(yōu)點(diǎn):重復(fù)鍵的情況下可保證最新的值正常
缺點(diǎn):$vars數(shù)組的大小決定執(zhí)行時(shí)間
2,直接追加
$GLOBALS += $vars;
優(yōu)點(diǎn):無循環(huán),直接操作
缺點(diǎn):如果鍵存在則不能寫入
總結(jié)
文件緩存轉(zhuǎn)內(nèi)存緩存最主要處理文件加載方式與全局變量注冊,在實(shí)際的應(yīng)用過程中,要特別注意各緩存文件中變量名的不同,如果變量名存在相同,則可能在多個(gè)文件加載過程中造成數(shù)據(jù)覆蓋。
在具體的開發(fā)實(shí)踐中,能使用內(nèi)存緩存則直接使用內(nèi)存緩存,同時(shí)如果存在大量文件緩存加載的情況下,考慮實(shí)現(xiàn)文件緩存轉(zhuǎn)內(nèi)存緩存的機(jī)制。
名詞解釋
文件緩存是指將從數(shù)據(jù)庫獲取的數(shù)據(jù)存入文件中,這樣下一次獲取數(shù)據(jù)的時(shí)候就不需要從數(shù)據(jù)庫獲取而直接從文件中獲取,這樣就能夠提升數(shù)據(jù)的訪問速度,因此在很多的開源程序代碼中都能看文件緩存的應(yīng)用。
內(nèi)存緩存是指將從數(shù)據(jù)庫獲取的數(shù)據(jù)存入內(nèi)存中,目前應(yīng)用比較廣泛的如Memcache。
相關(guān)文章
php 從指定數(shù)字中獲取隨機(jī)組合的簡單方法(推薦)
下面小編就為大家?guī)硪黄猵hp 從指定數(shù)字中獲取隨機(jī)組合的簡單方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04php使用GuzzleHttp實(shí)現(xiàn)HTTP請求
這篇文章主要為大家詳細(xì)介紹了php如何使用GuzzleHttp實(shí)現(xiàn)HTTP請求,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11PHP容易被忽略而出錯(cuò)陷阱 數(shù)字與字符串比較
數(shù)字與字符串比較時(shí), 先嘗試將字符串轉(zhuǎn)換為數(shù)字, 再比較, 一個(gè)不能轉(zhuǎn)換為數(shù)字的字符串, 轉(zhuǎn)換結(jié)果為0, 故, 與0比較總返回 true2011-11-11PHP使用PDO訪問oracle數(shù)據(jù)庫的步驟詳解
POD擴(kuò)展是在PHP5中加入,該擴(kuò)展提供PHP內(nèi)置類 PDO來對(duì)數(shù)據(jù)庫進(jìn)行訪問,不同數(shù)據(jù)庫使用相同的方法名,解決數(shù)據(jù)庫連接不統(tǒng)一的問題。下面這篇文章主要給大家介紹了關(guān)于PHP使用PDO訪問oracle數(shù)據(jù)庫的步驟,需要的朋友可以參考下。2017-09-09完美解決dedecms中的[html][/html]和[code][/code]問題
完美解決dedecms中的[html][/html]和[code][/code]問題...2007-03-03優(yōu)化WordPress中文章與評(píng)論的時(shí)間顯示
這篇文章主要介紹了優(yōu)化WordPress中文章與評(píng)論的時(shí)間顯示的方法,文中講解了設(shè)置相對(duì)時(shí)間內(nèi)顯示xxx時(shí)間以前及相對(duì)時(shí)間外顯示具體時(shí)間的方法,需要的朋友可以參考下2016-01-01解析在zend Farmework下如何創(chuàng)立一個(gè)FORM表單
本篇文章是對(duì)在zend Farmework下如何創(chuàng)立一個(gè)FORM表單的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06