PHP Conference Japan 2024

Memcached::addServers

(PECL memcached >= 0.1.1)

Memcached::addServers新增多個伺服器至伺服器池

說明

public Memcached::addServers(陣列 $servers): 布林值

Memcached::addServers()servers 新增至伺服器池。 servers 中的每個項目都應該是一個包含主機名稱、連接埠以及伺服器權重的陣列(權重為選填)。此時不會建立與伺服器的連線。

同一個伺服器可能會在伺服器池中出現多次,因為未進行重複檢查。這不建議;請改用 weight 選項來增加此伺服器的選擇權重。

參數

陣列

要加入池中的伺服器陣列。

回傳值

成功時回傳 true,失敗時回傳 false

範例

範例 #1 Memcached::addServers() 範例

<?php
$m
= new Memcached();

$servers = array(
array(
'mem1.domain.com', 11211, 33),
array(
'mem2.domain.com', 11211, 67)
);
$m->addServers($servers);
?>

另請參閱

新增註釋

使用者貢獻的註釋 2 則註釋

Aliaser
8 年前
為了正確的故障轉移機制

$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_CONNECT_TIMEOUT, 10);
$memcached->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$memcached->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT, 2);
$memcached->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true);
$memcached->setOption(Memcached::OPT_RETRY_TIMEOUT, 1);
$memcached->addServers($servers);

Memcached::OPT_DISTRIBUTION:將其設定為一致性雜湊。如果一個 memcached 節點失效,它的鍵(且只有它的鍵)將會平均分配到其他節點。這就是神奇之處。這與在 ->addServers() 呼叫中移除一個伺服器真的不同。

Memcached::OPT_SERVER_FAILURE_LIMIT:在伺服器被標記為失效並從伺服器列表中移除之前的連線問題次數(預設值:5)。

Memcached::OPT_REMOVE_FAILED_SERVERS:將其設定為「true」,以啟用移除失效伺服器的功能。

Memcached::OPT_RETRY_TIMEOUT:在節點被宣告失效後,libmemcached 將在這麼多秒後再次嘗試連線。這裡我將其設定為 1 秒,但我正在處理大多數時間執行不到 100 毫秒的 PHP 腳本。這只對 cron/daemonize 腳本有用。

Memcached::OPT_CONNECT_TIMEOUT:判斷伺服器失效的逾時時間。由於我的伺服器都在同一個區域網路中,ping 值約為 0.5 毫秒,因此 10 毫秒足以判斷伺服器已失效。需要注意的是,在節點被標記為失效之前,您必須等待兩倍的設定時間。因此,如果設定為 1000 毫秒,您的腳本將會鎖定 2 秒才會忽略失效的伺服器。這可能會大幅影響您的響應時間,這就是為什麼我將它設定得很低。

此說明由 Dugwood 的 Yvan 提供
Michael Brenden
13 年前
請參閱 __construct() 的說明

切勿每次執行都呼叫 ->addServers(),只有在伺服器不存在時才呼叫它(檢查 getServerList());否則,由於 addServers() 不會檢查重複項,它會讓您一次又一次地新增相同的伺服器,導致與 MC 常駐程式建立數百甚至數千個連線。
To Top