在Mac OS的PHP環境下安裝配置MemCache的全過程解析,安裝配置memcache_PHP教程

來源:互聯網
上載者:User

在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的守護...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.