php內(nèi)存緩存實現(xiàn)程序代碼

php內(nèi)存緩存實現(xiàn)程序代碼

1、普遍緩存技術:
數(shù)據(jù)緩存:這里所說的數(shù)據(jù)緩存是指數(shù)據(jù)庫查詢PHP緩存機制外驱,每次訪問頁面的時候,都會先檢測相應的緩存數(shù)據(jù)是否存在祖屏,如果不存在睡腿,就連接數(shù)據(jù)庫,得到數(shù)據(jù)爷光,并把查詢結果序列化后保存到文件中垫竞,以后同樣的查詢結果就直接從緩存表或文件中獲得。
用的最廣的例子看Discuz的搜索功能瞎颗,把結果ID緩存到一個表中件甥,下次搜索相同關鍵字時先搜索緩存表捌议。
舉個常用的方法哼拔,多表關聯(lián)的時候,把附表中的內(nèi)容生成數(shù)組保存到主表的一個字段中瓣颅,需要的時候數(shù)組分解一下倦逐,這樣的好處是只讀一個表,壞處就是兩個數(shù)據(jù)同步會多不少步驟宫补,數(shù)據(jù)庫永遠是瓶頸檬姥,用硬盤換速度,是這個的關鍵點粉怕。
2健民、頁面緩存:
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在贫贝,如果不存在秉犹,就連接數(shù)據(jù)庫,得到數(shù)據(jù)稚晚,顯示頁面并同時生成緩存頁面文件崇堵,這樣下次訪問的時候頁面文件就發(fā)揮作用了。(模板引擎和網(wǎng)上常見的一些PHP緩存機制類通常有此功能)
3客燕、時間觸發(fā)緩存:
檢查文件是否存在并且時間戳小于設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大鸳劳,那么就用緩存,否則更新緩存也搓。
4赏廓、內(nèi)容觸發(fā)緩存:
當插入數(shù)據(jù)或更新數(shù)據(jù)時,強制更新PHP緩存機制傍妒。
5幔摸、靜態(tài)緩存:
這里所說的靜態(tài)緩存是指靜態(tài)化,直接生成HTML或XML等文本文件拍顷,有更新的時候重生成一次抚太,適合于不太變化的頁面,這就不說了。

本文章要來講述關于php中內(nèi)存緩存的一些方法尿贫,下面我們介紹Memcached緩存和php自帶的APC緩存方法电媳。

1.Memcached緩存。
memcached是高性能的分布式內(nèi)存緩存服務器庆亡,通過緩存數(shù)據(jù)庫查詢結果匾乓,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應用的速度又谋。memcached 使用了“Key=>Value”方式組織數(shù)據(jù)拼缝。可以允許不同主機上的多個用戶同時訪問這個緩存系統(tǒng)彰亥,一般用于大型網(wǎng)站使用咧七。memcached使用內(nèi)存緩存數(shù)據(jù),所以它是易失的任斋,當服務器重啟继阻,或者memcached進程中止,數(shù)據(jù)便會丟失废酷,所以 memcached不能用來持久保存數(shù)據(jù)瘟檩。

過php_memcache的人都會覺得 PHP內(nèi)存緩存是一個很復雜的東西,其實不然澈蟆。
memcached 是高效墨辛、快速的分布式內(nèi)存對象緩存系統(tǒng),主要用于加速 WEB 動態(tài)應用程序趴俘。
這里介紹memcached在WIN32下的配置及其使用睹簇。

一、PHP內(nèi)存緩存的配置(WIN32環(huán)境)

1哮幢、下載php_memcache.rar带膀,請從附件下載。

解壓壓縮包:php_memcache.rar

php_memcache.rar壓縮包里主包含的文件有:

/memcached-1.2.1-win32/memcached.exe
/php_memcache/php_memcache.dll

2橙垢、打開命令提示符垛叨,指向到memcached.exe所在路徑,運行memcached.exe -d start柜某。

3嗽元、將php_memcache.dll文件拷貝到PHP的動態(tài)文件庫的文件夾下。

4喂击、在php.ini文件中加入一行extension=php_memcache.dll剂癌。

5、重新啟動Apache翰绊,然后查看一下phpinfo佩谷,如果有memcache旁壮,那么就說明安裝成功!

例:
代碼如下 復制代碼

<?php
//包含 memcached 類文件
require_once('memcached-client.php');

//選項設置
$options = array(
'servers' => array('www.hxsd.com:11211'),//memcached 服務的地址谐檀、端口
'debug' => true,//是否打開debug
'compress_threshold' => 10240,//超過多少字節(jié)的數(shù)據(jù)時進行壓縮
'persistant' => false//是否使用持久連接
);

//實例化memcached對象
$memcached = new memcached($options);

$sql = 'SELECT * FROM table1';
$key = md5($sql);

//如果在memcached中沒有緩存數(shù)據(jù),把緩存數(shù)據(jù)寫入memcached
if(!($datas = $memcached->get($key)))
{
$conn = mysql_connect('localhost', 'hxsd', '123456');
mysql_select_db('hxsd');
$result = mysql_query($sql);
while($row = mysql_fetch_object($result))
{
$datas[] = $row;
}
//將數(shù)據(jù)庫中獲取到的結果集數(shù)據(jù)保存到 memcached 中抡谐,以供下次訪問時使用。
$memcached->add($key, $datas);
}
else
{
//直接使用memcached中的緩存數(shù)據(jù)$datas
}
?>

內(nèi)存緩存二

APC桐猬、EC麦撵、Zend加速器的比較

一、APC

APC,全稱是Alternative PHP Cache,官方翻譯叫”可選PHP緩存”溃肪。

主頁是 http://pecl.php.net/package/apc

php幫助手冊頁面: http://cn.php.net/apc

APC是個優(yōu)化器,自安裝之日起,就默默地在后臺為您的PHP應用服務了.您的所有PHP代碼會被緩存起來. (針對php opcode)

另外,APC可提供一定的內(nèi)存緩存功能.但是這個功能并不是十分完美,有報告說如果頻繁使用APC緩存的寫入功能,會導致不可預料的錯誤.如果想使用這個功能,可以看看apc_fetch,apc_store等幾個與apc緩存相關的函數(shù).

安裝:
代碼如下 復制代碼

pecl install APC

配置:(/etc/php.inc)
代碼如下 復制代碼

extension=apc.so

[apc]
代碼如下 復制代碼

apc.enabled = 1

apc.shm_segments = 1

apc.shm_size = 30

apc.optimization = 0

apc.ttl = 7200

apc.user_ttl = 7200

apc.num_files_hint = 1000

apc.mmap_file_mask = /tmp/apc.XXXXXX

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末免胃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惫撰,更是在濱河造成了極大的恐慌羔沙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件润绎,死亡現(xiàn)場離奇詭異撬碟,居然都是意外死亡诞挨,警方通過查閱死者的電腦和手機莉撇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惶傻,“玉大人棍郎,你說我怎么就攤上這事∫遥” “怎么了涂佃?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜈敢。 經(jīng)常有香客問我辜荠,道長,這世上最難降的妖魔是什么抓狭? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任伯病,我火速辦了婚禮,結果婚禮上否过,老公的妹妹穿的比我還像新娘午笛。我一直安慰自己,他們只是感情好苗桂,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布药磺。 她就那樣靜靜地躺著,像睡著了一般煤伟。 火紅的嫁衣襯著肌膚如雪癌佩。 梳的紋絲不亂的頭發(fā)上木缝,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音围辙,去河邊找鬼氨肌。 笑死,一個胖子當著我的面吹牛酌畜,可吹牛的內(nèi)容都是我干的怎囚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桥胞,長吁一口氣:“原來是場噩夢啊……” “哼恳守!你這毒婦竟也來了?” 一聲冷哼從身側響起贩虾,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤催烘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缎罢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伊群,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年策精,在試婚紗的時候發(fā)現(xiàn)自己被綠了舰始。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咽袜,死狀恐怖丸卷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情询刹,我是刑警寧澤谜嫉,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凹联,受9級特大地震影響沐兰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蔽挠,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一住闯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧象泵,春花似錦寞秃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至忽孽,卻和暖如春绑改,著一層夾襖步出監(jiān)牢的瞬間谢床,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工厘线, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留识腿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓造壮,卻偏偏與公主長得像渡讼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子耳璧,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一成箫、MemCache簡介 session MemCache是一個自由、源碼開放旨枯、高性能蹬昌、分布式的分布式內(nèi)存對象緩存...
    李偉銘MIng閱讀 3,810評論 2 13
  • 1、memcache的概念攀隔? Memcache是一個高性能的分布式的內(nèi)存對象緩存系統(tǒng)皂贩,通過在內(nèi)存里維護一個統(tǒng)一的巨...
    桖辶殤閱讀 2,239評論 2 12
  • php緩存技術 普遍緩存技術 數(shù)據(jù)緩存:這里所說的數(shù)據(jù)緩存是指數(shù)據(jù)庫查詢緩存,每次訪問頁面的時候,都會先檢測相應的...
    桖辶殤閱讀 2,219評論 0 4
  • 轉載自cr180大神DiscuzX2.5完整目錄結構【source程序文件庫】 /source/admincp后臺...
    cndaqiang閱讀 853評論 1 2
  • 緩存昆汹,顧名思義明刷,就是臨時存儲信息以提高訪問性能。PHP的緩存技術大體可分為三大類: 1. 緩存內(nèi)容(Caching...
    wsdadan閱讀 2,451評論 0 1