《PHP學習:在Mac OS的PHP環(huán)境下安裝配置MemCache的全過程解析》要點:
本文介紹了PHP學習:在Mac OS的PHP環(huán)境下安裝配置MemCache的全過程解析,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關主題:memcache擴展 / 鍵值KeyValue存儲數(shù)據(jù)庫
安裝服務端
memcache是項目名,而在服務端的駐留進程叫memcached(linux的守護進程一般都是在后面加個d).在OSX下使用brew可以快速安裝memcache:PHP學習
$ sudo brew install memcached
memcache的依賴:openssl和libevent會自動下載并安裝.PHP學習
安裝完成后,使用如下命令啟動:PHP學習
$ sudo memcached -m 32 -p 11211 -d
安裝php擴展
使用php操作memcache前,需要安裝php的擴展,php的擴展有兩個可以選擇memcache和memcached,這里就安裝比較經(jīng)典的前者.從這里選擇一個版本下載源碼壓縮包,解壓,進入到源碼目錄后執(zhí)行:PHP學習
$ sudo phpize
phpize是幫助用來在已編譯好的php外,編譯php擴展用的腳本,用來生成configure、make等文件.有時執(zhí)行這個命令會報錯:PHP學習
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
缺少依賴,那就安裝咯,還是使用brew:PHP學習
$ sudo brew install autoconf
phpize完成后,依次實行如下命令實現(xiàn)編譯和安裝:PHP學習
$ sudo ./configure $ sudo make $ sudo make install
編譯好的memcache.so一般被安裝到如下目錄:PHP學習
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-xxxxxx/
這樣就可以在php.ini中配置這個擴展了:PHP學習
extension=/usr/lib/php/extensions/no-debug-non-zts-xxxxxx/memcache.so
打開phpinfo()頁面,查看memcache是否已經(jīng)加載成功:
PHP學習
PHP學習
設置yii
這樣其實已經(jīng)可以在php中直接使用memcache了,這里就不累述了,如果在yii中使用,則需要添加一個組件:PHP學習
'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'127.0.0.1', 'port'=>11211 ) ), ), ...
關于更多的yii配置請參閱其文檔.最后,在yii中使用memcache:PHP學習
Yii::app()->cache->set('key1','value1'); Yii::app()->cache->get('key1');
memcached使用示例
將純粹使用數(shù)據(jù)庫查詢的代碼加上memcached支持是很簡單的,假設這是原來的代碼:PHP學習
function get_foo (int userid) { result = db_select("SELECT * FROM users WHERE userid = ?", userid); return result; }
加上memcached的緩存機制后:PHP學習
function get_foo (int userid) { result = memcached_fetch("userrow:" + userid); if (!result) { result = db_select("SELECT * FROM users WHERE userid = ?", userid); memcached_add("userrow:" + userid, result); } return result; }
上述的程序會先到memcached檢查是否有userrow:userid的數(shù)據(jù),如果有則直接傳回結(jié)果,如果不存在時再去數(shù)據(jù)庫查詢,并將結(jié)果放到memcached內(nèi).PHP學習
在memcached內(nèi)已經(jīng)有緩存信息時將數(shù)據(jù)庫的數(shù)據(jù)更新后,上述的程序會抓到舊的數(shù)據(jù),這是屬于Cache coherency的問題.其中一種解決的方法是在更新數(shù)據(jù)庫時,同時更新memcached內(nèi)的信息:PHP學習
function update_foo(int userid, string dbUpdateString) { result = db_execute(dbUpdateString); if (result) { data = createUserDataFromDBString(dbUpdateString); memcached_set("userrow:"+userid, data); } }
維易PHP培訓學院每天發(fā)布《PHP學習:在Mac OS的PHP環(huán)境下安裝配置MemCache的全過程解析》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/7543.html