亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP模塊 Memcached功能多于Memcache

 更新時(shí)間:2011年06月14日 22:44:04   作者:  
PHP搭配Memcached已經(jīng)是婦孺皆知的標(biāo)配了。再提似乎讓人覺得太“圡”了,不過有一些細(xì)節(jié)不見得人人都清楚
比如說PECL里有兩個(gè)Memcached的模塊,MemcacheMemcached,目前大部分PHP環(huán)境里使用的是名字里不帶d的Memcache版本,這個(gè)版本釋出的比較早,是一個(gè)原生版本,與之對應(yīng)的帶d的Memcached版本則是建立在libmemcached的基礎(chǔ)上,所以說Memcached版本的功能更全一些。

安裝Memcached版本的PHP模塊

wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
make install

wget http://pecl.php.net/get/memcached-1.0.0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install

打開php.ini加上:

extension = "memcached.so"

這樣安裝就結(jié)束了,你可以通過下列命令來確認(rèn):

php -m | grep mem

演示Memcached版本的新功能

先虛構(gòu)一個(gè)問題,假設(shè)counter初始值是一個(gè)整數(shù),不使用increment方法,通過get/set完成每次加一。

在Memcache版本里,我們只能按照大致如下的方式來進(jìn)行:

$m = new Memcache();
$m->addServer('localhost', 11211);
$v = $m->get('counter');
$m->set('counter', $v + 1);

由于get/set這兩個(gè)動(dòng)作無法作為一個(gè)原子來操作,所以當(dāng)多個(gè)進(jìn)程同時(shí)處理時(shí),會(huì)出現(xiàn)丟失的可能,更讓人惱火的是,你根本就不知道什么時(shí)候出現(xiàn)丟失。

再看看Memcached版本里,我們是如何做的:

$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $md->get('counter', null, $token)
$md->cas($token, 'counter', $v + 1);

cas是Memcached版本里提供的功能,說白了就是一個(gè)樂觀鎖的功能,如果你把$token的值var_dump出來,就會(huì)發(fā)現(xiàn)$token其實(shí)就是一個(gè)版本號,如果通過get得到的$token版本號在cas的時(shí)候不對應(yīng),就說明已經(jīng)有別的操作更新了,此時(shí)cas操作會(huì)失敗,至于如何繼續(xù)操作,就看你自己了。

注:如果你想手動(dòng)重現(xiàn)一下沖突的情況,可在get和cas之間sleep若干秒,并拷貝兩份腳本,先后執(zhí)行。

順便說一句,推薦的Memcached版本模塊的哈希設(shè)置如下:

$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);

總結(jié)

Memcached版本還有很多Memcache沒有的功能,比如通過getByKey, setByKey等自動(dòng)支持多個(gè)服務(wù)器,就不贅述了,該用哪個(gè)擴(kuò)展已經(jīng)不言自明了。

補(bǔ)充:http://code.google.com/p/memcached/wiki/PHPClientComparison

相關(guān)文章

  • PHP折半(二分)查找算法實(shí)例分析

    PHP折半(二分)查找算法實(shí)例分析

    這篇文章主要介紹了PHP折半(二分)查找算法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php折半(二分)查找算法的概念、原理、實(shí)現(xiàn)與使用方法,并附帶了一個(gè)php折半(二分)查找算法類供大家參考,需要的朋友可以參考下
    2018-05-05
  • PHP生成餅圖的示例代碼

    PHP生成餅圖的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用PHP實(shí)現(xiàn)餅圖的繪制,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • PHP二維數(shù)組實(shí)現(xiàn)去除重復(fù)項(xiàng)的方法【保留各個(gè)鍵值】

    PHP二維數(shù)組實(shí)現(xiàn)去除重復(fù)項(xiàng)的方法【保留各個(gè)鍵值】

    這篇文章主要介紹了PHP二維數(shù)組實(shí)現(xiàn)去除重復(fù)項(xiàng)的方法,結(jié)合實(shí)例形式分析了php保留各個(gè)鍵值的情況下去除重復(fù)項(xiàng)的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • PHP下打開URL地址的幾種方法小結(jié)

    PHP下打開URL地址的幾種方法小結(jié)

    PHP中打開URL地址的幾種方法總結(jié),這里的函數(shù)主要用于小偷采集等函數(shù)。
    2010-05-05
  • THINKPHP支持YAML配置文件的設(shè)置方法

    THINKPHP支持YAML配置文件的設(shè)置方法

    這篇文章主要介紹了THINKPHP支持YAML配置文件的設(shè)置方法,本文講解了為什么要用 yaml以及在THINKPHP中的配置方法,需要的朋友可以參考下
    2015-03-03
  • php文件讀取方法實(shí)例分析

    php文件讀取方法實(shí)例分析

    這篇文章主要介紹了php文件讀取方法,實(shí)例分析了php讀取文件行、字符、固定位置等的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • php生成圖片縮略圖功能示例

    php生成圖片縮略圖功能示例

    這篇文章主要介紹了php生成圖片縮略圖功能,結(jié)合完整實(shí)例形式分析了php縮略圖生成的詳細(xì)步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • 微信公眾平臺(tái)開發(fā)教程⑥ 微信開發(fā)集成類的使用圖文詳解

    微信公眾平臺(tái)開發(fā)教程⑥ 微信開發(fā)集成類的使用圖文詳解

    這篇文章主要介紹了微信公眾平臺(tái)開發(fā)之微信開發(fā)集成類的使用,結(jié)合圖文形式詳細(xì)分析了微信開發(fā)集成類的原理、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-04-04
  • php中郵箱地址正則表達(dá)式實(shí)現(xiàn)與詳解

    php中郵箱地址正則表達(dá)式實(shí)現(xiàn)與詳解

    本文章不但要講述了關(guān)于正則達(dá)式而且還講述了關(guān)于郵箱正則的構(gòu)成用法詳解,有需要了解的朋友可以參考一下,同時(shí)我們也提供了多種不同的郵箱驗(yàn)證實(shí)例
    2012-04-04
  • PHP ADODB實(shí)現(xiàn)分頁功能簡單示例

    PHP ADODB實(shí)現(xiàn)分頁功能簡單示例

    這篇文章主要介紹了PHP ADODB實(shí)現(xiàn)分頁功能,結(jié)合實(shí)例形式分析了php使用ADODB實(shí)現(xiàn)分頁功能相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05

最新評論