Memcache::addServer

(PECL memcache >= 2.0.0)

Memcache::addServer向連接池中添加一個(gè)memcache服務(wù)器

說明

Memcache::addServer(
    string $host,
    int $port = 11211,
    bool $persistent = ?,
    int $weight = ?,
    int $timeout = ?,
    int $retry_interval = ?,
    bool $status = ?,
    callback $failure_callback = ?,
    int $timeoutms = ?
): bool

Memcache::addServer()增加一個(gè)服務(wù)器到連接池中。通過Memcache::addServer() 打開的連接將會(huì)在腳本執(zhí)行結(jié)束后自動(dòng)關(guān)閉,也可以使用Memcache::close()進(jìn)行手動(dòng)關(guān)閉。 您也可以使用memcache_add_server()來添加服務(wù)器。

當(dāng)使用這個(gè)方法的時(shí)候(與Memcache::connect()Memcache::pconnect()相反) 網(wǎng)絡(luò)連接并不會(huì)立刻建立,而是直到真正使用的時(shí)候才建立。 因此在加入大量服務(wù)器到連接池中時(shí)也是沒有開銷的,因?yàn)樗鼈兛赡懿⒉粫?huì)被使用。

故障轉(zhuǎn)移可能在方法的任何一個(gè)層次發(fā)生,通常只要其他服務(wù)器可用用戶就不會(huì)感受到。任何的socket或memcache服務(wù)器級(jí)別的錯(cuò)誤 (比如內(nèi)存溢出)都可能導(dǎo)致故障轉(zhuǎn)移。而一般的客戶端錯(cuò)誤比如使用Memcache::add嘗試增加一個(gè)已經(jīng)存在的key則不會(huì)導(dǎo)致故障轉(zhuǎn)移。

注意:

這個(gè)方法在2.0.0版本加入Memcache。

參數(shù)

host

要連接的memcached服務(wù)端監(jiān)聽的主機(jī)位置。這個(gè)參數(shù)通常指定其他類型的傳輸比如Unix域套接字使用 unix:///path/to/memcached.sock,這種情況下參數(shù)port 必須設(shè)置為0。

port

要連接的memcached服務(wù)端監(jiān)聽的端口。當(dāng)使用UNIX域套接字連接時(shí)設(shè)置為0。

persistent

控制是否使用持久化連接。默認(rèn)true。

weight

為此服務(wù)器創(chuàng)建的桶的數(shù)量,用來控制此服務(wù)器被選中的權(quán)重,單個(gè)服務(wù)器被選中的概率是相對(duì)于所有服務(wù)器weight總和而言的。

timeout

連接持續(xù)(超時(shí))時(shí)間(單位秒),默認(rèn)值1秒,修改此值之前請(qǐng)三思,過長的連接持續(xù)時(shí)間可能會(huì)導(dǎo)致失去所有的緩存優(yōu)勢。

retry_interval

服務(wù)器連接失敗時(shí)重試的間隔時(shí)間,默認(rèn)值15秒。如果此參數(shù)設(shè)置為-1表示不重試。此參數(shù)和persistent參數(shù)在擴(kuò)展以 dl()函數(shù)動(dòng)態(tài)加載的時(shí)候無效。

每個(gè)失敗的連接結(jié)構(gòu)有自己的超時(shí)時(shí)間,并且在它失效之前選擇后端服務(wù)請(qǐng)求時(shí)該結(jié)構(gòu)會(huì)被跳過。一旦一個(gè)連接失效, 它將會(huì)被成功重新連接或被標(biāo)記為失敗連接以在下一個(gè)retry_interval秒重連。 典型的影響是每個(gè)web服務(wù)子進(jìn)程在服務(wù)于一個(gè)頁面時(shí)將會(huì)每retry_interval秒 嘗試重新連接一次。

status

控制此服務(wù)器是否可以被標(biāo)記為在線狀態(tài)。設(shè)置此參數(shù)值為false并且retry_interval參數(shù) 設(shè)置為-1時(shí)允許將失敗的服務(wù)器保留在一個(gè)池中以免影響key的分配算法。對(duì)于這個(gè)服務(wù)器的請(qǐng)求會(huì)進(jìn)行故障轉(zhuǎn)移或者立即失敗, 這受限于memcache.allow_failover參數(shù)的設(shè)置。該參數(shù)默認(rèn)true,表明允許進(jìn)行故障轉(zhuǎn)移。

failure_callback

允許用戶指定一個(gè)運(yùn)行時(shí)發(fā)生錯(cuò)誤后的回調(diào)函數(shù)?;卣{(diào)函數(shù)會(huì)在故障轉(zhuǎn)移之前運(yùn)行?;卣{(diào)函數(shù)會(huì)接受到兩個(gè)參數(shù),分別是失敗主機(jī)的 主機(jī)名和端口號(hào)。

timeoutms

返回值

成功時(shí)返回 true, 或者在失敗時(shí)返回 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);

?>

參見