PHP Conference Japan 2024

GearmanWorker::addServer

(PECL gearman >= 0.5.0)

GearmanWorker::addServer新增一個工作伺服器

描述

public GearmanWorker::addServer(string $host = null, int $port = 0, bool $setupExceptionHandler = true): bool

將一個工作伺服器新增到此工作者。這會進入可用來執行工作的一組伺服器清單。此處不會發生任何 Socket I/O。

參數

host

工作伺服器主機名稱。

port

工作伺服器連接埠。

傳回值

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

範例

範例 #1 新增替代的 Gearman 伺服器

<?php
$worker
= new GearmanWorker();
$worker->addServer("10.0.0.1");
$worker->addServer("10.0.0.2", 7003);
?>

參見

新增註解

使用者提供的註解 7 則註解

magge
12 年前
如果您突然開始收到

PHP Fatal error:未捕獲的例外 'GearmanException',訊息為 'Failed to set exception option' in

...在您的 GearmanWorker::work() 呼叫上,我能夠透過為 GearmanWorker::addServer() 指定值來修正此問題,即使它們與文件中記錄的預設值相同。

當機

<?php
$gmw
= new GearmanWorker();
$gmw->addServer();
$gmw->work();
?>

正常運作

<?php
$gmw
= new GearmanWorker();
$gmw->addServer("127.0.0.1", 4730);
$gmw->work();
?>

想一下吧。:)
liv_romania at yahoo dot com
9 年前
若要正確測試新增的伺服器,您可以使用以下程式碼

<?php
// 建立工作者
$worker= new GearmanWorker();

// 新增工作伺服器(錯誤的主機/連接埠)
$worker->addServer('127.0.0.2', 4731);

// 定義一個變數來保存應用程式資料
$count = 0;

// 新增反轉函式
$worker->addFunction('reverse', 'my_reverse_function', $count);

// 測試工作伺服器回應
if (!@$worker->echo('test data')) {
die(
$worker->error());
}

// 開始工作者監聽工作提交
while ($worker->work());

function
my_reverse_function($job, &$count)
{
$count++;

return
$count . ': ' . strrev($job->workload()) . "\n";
}
?>
anubhav dot jha at gmail dot com
7 年前
我在新增伺服器時收到以下訊息:未捕獲的例外 'GearmanException',訊息為 'Failed to set exception option' in <<filename>>:<<linenumber >>
在 centos 6.5 上

透過以下步驟修正
yum install gearmand
/etc/init.d/gearmand start
mike at eastghost dot com
7 年前
PHP Fatal error:未捕獲的例外 'GearmanException',訊息為 'Failed to set exception option'

也表示 gearmand 精靈未執行。
gabe dot spradlin at gmail dot com
11 年前
手冊指出成功時您會得到 TRUE,失敗時會得到 FALSE。當我嘗試連線到已關閉電源的伺服器時,我仍然會得到 TRUE。returnCode() 的傳回值是 0,這與成功連線的 returnCode() 相同。

我尚未找到解決此問題的方法。
allevo
7 年前
在 Ubuntu 上 (php7 php-gearman/xenial,現在 2.0.2+1.1.2-1+deb.sury.org~xenial+1 amd64),此函式會擲回 GearmanException。
請在 try catch 中使用
617137379 at qq dot com
11 年前
addserver 中不會發生 Socket I/O。
To Top