(PECL memcache >= 2.0.0)
Memcache::addServer — 向連接池中添加一個memcache服務(wù)器
$host
,$port
= 11211,$persistent
= ?,$weight
= ?,$timeout
= ?,$retry_interval
= ?,$status
= ?,$failure_callback
= ?,$timeoutms
= ?Memcache::addServer()增加一個服務(wù)器到連接池中。通過Memcache::addServer() 打開的連接將會在腳本執(zhí)行結(jié)束后自動關(guān)閉,也可以使用Memcache::close()進(jìn)行手動關(guān)閉。 您也可以使用memcache_add_server()來添加服務(wù)器。
當(dāng)使用這個方法的時候(與Memcache::connect()和Memcache::pconnect()相反) 網(wǎng)絡(luò)連接并不會立刻建立,而是直到真正使用的時候才建立。 因此在加入大量服務(wù)器到連接池中時也是沒有開銷的,因為它們可能并不會被使用。
故障轉(zhuǎn)移可能在方法的任何一個層次發(fā)生,通常只要其他服務(wù)器可用用戶就不會感受到。任何的socket或memcache服務(wù)器級別的錯誤 (比如內(nèi)存溢出)都可能導(dǎo)致故障轉(zhuǎn)移。而一般的客戶端錯誤比如使用Memcache::add嘗試增加一個已經(jīng)存在的key則不會導(dǎo)致故障轉(zhuǎn)移。
注意:
這個方法在2.0.0版本加入Memcache。
host
要連接的memcached服務(wù)端監(jiān)聽的主機(jī)位置。這個參數(shù)通常指定其他類型的傳輸比如Unix域套接字使用
unix:///path/to/memcached.sock
,這種情況下參數(shù)port
必須設(shè)置為0
。
port
要連接的memcached服務(wù)端監(jiān)聽的端口。當(dāng)使用UNIX域套接字連接時設(shè)置為0
。
persistent
控制是否使用持久化連接。默認(rèn)true
。
weight
為此服務(wù)器創(chuàng)建的桶的數(shù)量,用來控制此服務(wù)器被選中的權(quán)重,單個服務(wù)器被選中的概率是相對于所有服務(wù)器weight總和而言的。
timeout
連接持續(xù)(超時)時間(單位秒),默認(rèn)值1秒,修改此值之前請三思,過長的連接持續(xù)時間可能會導(dǎo)致失去所有的緩存優(yōu)勢。
retry_interval
服務(wù)器連接失敗時重試的間隔時間,默認(rèn)值15秒。如果此參數(shù)設(shè)置為-1表示不重試。此參數(shù)和persistent
參數(shù)在擴(kuò)展以
dl()函數(shù)動態(tài)加載的時候無效。
每個失敗的連接結(jié)構(gòu)有自己的超時時間,并且在它失效之前選擇后端服務(wù)請求時該結(jié)構(gòu)會被跳過。一旦一個連接失效,
它將會被成功重新連接或被標(biāo)記為失敗連接以在下一個retry_interval
秒重連。
典型的影響是每個web服務(wù)子進(jìn)程在服務(wù)于一個頁面時將會每retry_interval
秒
嘗試重新連接一次。
status
控制此服務(wù)器是否可以被標(biāo)記為在線狀態(tài)。設(shè)置此參數(shù)值為false
并且retry_interval
參數(shù)
設(shè)置為-1時允許將失敗的服務(wù)器保留在一個池中以免影響key的分配算法。對于這個服務(wù)器的請求會進(jìn)行故障轉(zhuǎn)移或者立即失敗,
這受限于memcache.allow_failover
參數(shù)的設(shè)置。該參數(shù)默認(rèn)true
,表明允許進(jìn)行故障轉(zhuǎn)移。
failure_callback
允許用戶指定一個運(yùn)行時發(fā)生錯誤后的回調(diào)函數(shù)?;卣{(diào)函數(shù)會在故障轉(zhuǎn)移之前運(yùn)行?;卣{(diào)函數(shù)會接受到兩個參數(shù),分別是失敗主機(jī)的 主機(jī)名和端口號。
timeoutms
成功時返回 true
, 或者在失敗時返回 false
。
示例 #1 Memcache::addServer() 示例
<?php
/* OO API */
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);
/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_add_server($memcache_obj, 'memcache_host2', 11211);
?>