在Mac OS的PHP環境下安裝配置MemCache的全過程解析,安裝配置memcache
安裝服務端
memcache是項目名,而在服務端的駐留進程叫memcached(linux的守護進程一般都是在後面加個d)。在OSX下使用brew可以快速安裝memcache:
$ sudo brew install memcached
memcache的依賴:openssl和libevent會自動下載並安裝。
安裝完成後,使用如下命令啟動:
$ sudo memcached -m 32 -p 11211 -d
安裝php擴充
使用php操作memcache前,需要安裝php的擴充,php的擴充有兩個可以選擇memcache和memcached,這裡就安裝比較經典的前者。從這裡選擇一個版本下載源碼壓縮包,解壓,進入到源碼目錄後執行:
$ sudo phpize
phpize是協助用來在已編譯好的php外,編譯php擴充用的指令碼,用來產生configure、make等檔案。有時執行這個命令會報錯:
Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.
缺少依賴,那就安裝咯,還是使用brew:
$ sudo brew install autoconf
phpize完成後,依次實行如下命令實現編譯和安裝:
$ sudo ./configure$ sudo make$ sudo make install
編譯好的memcache.so一般被安裝到如下目錄:
Installing shared extensions: /usr/lib/php/extensions/no-debug-non-zts-xxxxxx/
這樣就可以在php.ini中配置這個擴充了:
extension=/usr/lib/php/extensions/no-debug-non-zts-xxxxxx/memcache.so
開啟phpinfo()頁面,查看memcache是否已經載入成功:
設定yii
這樣其實已經可以在php中直接使用memcache了,這裡就不累述了,如果在yii中使用,則需要添加一個組件:
'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'127.0.0.1', 'port'=>11211 ) ), ),...
關於更多的yii配置請參閱其文檔。最後,在yii中使用memcache:
Yii::app()->cache->set('key1','value1');Yii::app()->cache->get('key1');
memcached使用樣本
將純粹使用資料庫查詢的代碼加上memcached支援是很簡單的,假設這是原來的代碼:
function get_foo (int userid) { result = db_select("SELECT * FROM users WHERE userid = ?", userid); return result;}
加上memcached的緩衝機制後:
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的資料,如果有則直接傳回結果,如果不存在時再去資料庫查詢,並將結果放到memcached內。
在memcached內已經有緩衝資訊時將資料庫的資料更新後,上述的程式會抓到舊的資料,這是屬於Cache coherency的問題。其中一種解決的方法是在更新資料庫時,同時更新memcached內的資訊:
function update_foo(int userid, string dbUpdateString) { result = db_execute(dbUpdateString); if (result) { data = createUserDataFromDBString(dbUpdateString); memcached_set("userrow:"+userid, data); }}
您可能感興趣的文章:
- PHP儲存session到memcache伺服器的方法
- 在php中設定session用memcache來儲存的方法總結
- PHP擴充Memcache分布式部署方案
- PHP環境中Memcache的安裝和使用
- windows下安裝php5.2.*,php5.3.*,php5.4.*版本的memcache擴充
- PHP實現的memcache環形隊列類執行個體
- php中memcache 基本操作執行個體
- 在win系統安裝配置 Memcached for PHP 5.3 圖文教程
- windows中為php安裝mongodb與memcache
http://www.bkjia.com/PHPjc/1100315.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1100315.htmlTechArticle在Mac OS的PHP環境下安裝配置MemCache的全過程解析,安裝配置memcache 安裝服務端 memcache是項目名,而在服務端的駐留進程叫memcached(linux的守護...