Memcache::addServer

(PECL memcache >= 2.0.0)

Memcache::addServer向連接池中添加一個memcache服務器

說明

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()增加一個服務器到連接池中。通過Memcache::addServer() 打開的連接將會在腳本執(zhí)行結束后自動關閉,也可以使用Memcache::close()進行手動關閉。 您也可以使用memcache_add_server()來添加服務器。

當使用這個方法的時候(與Memcache::connect()Memcache::pconnect()相反) 網絡連接并不會立刻建立,而是直到真正使用的時候才建立。 因此在加入大量服務器到連接池中時也是沒有開銷的,因為它們可能并不會被使用。

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

注意:

這個方法在2.0.0版本加入Memcache。

參數

host

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

port

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

persistent

控制是否使用持久化連接。默認true。

weight

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

timeout

連接持續(xù)(超時)時間(單位秒),默認值1秒,修改此值之前請三思,過長的連接持續(xù)時間可能會導致失去所有的緩存優(yōu)勢。

retry_interval

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

每個失敗的連接結構有自己的超時時間,并且在它失效之前選擇后端服務請求時該結構會被跳過。一旦一個連接失效, 它將會被成功重新連接或被標記為失敗連接以在下一個retry_interval秒重連。 典型的影響是每個web服務子進程在服務于一個頁面時將會每retry_interval秒 嘗試重新連接一次。

status

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

failure_callback

允許用戶指定一個運行時發(fā)生錯誤后的回調函數。回調函數會在故障轉移之前運行。回調函數會接受到兩個參數,分別是失敗主機的 主機名和端口號。

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);

?>

參見