如果您提供多個伺服器,它總是會採用最後一個伺服器,除非該伺服器不可用。這是 Gearman 的運作方式(而且通常不是一個壞主意)。
如果您想將工作分散到多個伺服器上,您可能需要隨機排列伺服器列表。
(PECL gearman >= 0.5.0)
GearmanClient::addServers — 將工作伺服器列表新增至客戶端
新增可用於執行任務的工作伺服器列表。此處不會發生 Socket I/O;伺服器只是新增到完整的伺服器列表中。
servers
以逗號分隔的伺服器列表,每個伺服器的格式為 'host:port
'。
範例 #1 新增兩個工作伺服器
<?php
# 建立我們的客戶端物件。
$gmclient= new GearmanClient();
# 新增多個工作伺服器,第一個使用預設的 4730 連接埠
$gmclient->addServers("10.0.0.1,10.0.0.2:7003");
?>
如果您提供多個伺服器,它總是會採用最後一個伺服器,除非該伺服器不可用。這是 Gearman 的運作方式(而且通常不是一個壞主意)。
如果您想將工作分散到多個伺服器上,您可能需要隨機排列伺服器列表。
實際上,當任何伺服器關閉或無法連線時,客戶端會拋出例外,而不是像這樣:
Fatal error: Uncaught exception 'GearmanException' with message 'Failed to set exception option' in /var/www/ipao/Api/Q2/Test/gm-test.php:11
堆疊追蹤
#0 /var/www/ipao/Api/Q2/Test/gm-test.php(11): GearmanClient->addServer('xxx.xxx.xxx.xxx')
#1 {main}