(PECL gearman >= 0.5.0)

GearmanClient::addServerДобавить сервер задач для клиента


public bool GearmanClient::addServer ([ string $host = [, int $port = 4730 ]] )

Добавляет сервер задач к списку серверов, которые могут использоваться для выполнения задачи. Никаких операций ввода-вывода c сокетом здесь не происходит. Сервер просто добавляется к списку.

Список параметров


Имя хоста сервера задач.


Порт сервера задач.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.


Пример #1 Добавление двух серверов задач


# Создаем клиентский объект
$gmclient= new GearmanClient();

# Добавляем два сервера задач, первый из них работает с портом 4730 по умолчанию


Смотрите также


Since a few versions the port parameter is not optional anymore. I have version 1.1.1 of pecl/gearman compiled with libgearman 1.1.5, and I'm getting the following error:

send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet -> libgearman/

This happens if you don't provide a port.

Just set the second parameter to 4730 and it is working again.
2013-04-08 14:22:00
The addServer and addServers are unforgiving when any of the addresses are down. I tried using exceptions, but it does not quite work. Can you provide a working example to handle a list of servers where one or more is not running.

2013-10-29 20:19:03
2015-03-02 13:18:25
Adding to Amit's comments,  I found that if the first server in the list of servers is down, then there seems to be no way to handle such a condition.
2015-11-23 02:14:24
Amit, kosta250

I found a workaround to avoid the dead servers and continue with rest alive. 


= array(
'host' => '''port' => '4730'), 
'host' => '''port' => '4731'), 
'host' => '''port' => '4732'), 
'host' => '''port' => '4730')

$client= new GearmanClient();

$servers as $server) {
$c = new GearmanClient();
$c->addServer($server['host'], $server['port']);

  if (@
$c->ping('ping')) {
$client->addServer($server['host'], $server['port']);

2015-12-04 16:59:23
Prior to version 2.0.5, addServer DOES perform socket I/O indirectly because it calls set_server_option internally for an exception handler. This means if the server is unreachable you will get a GearmanException thrown at this point, and you may want to catch and handle it in your application.


->addServer(''4321); // does attempt a socket connection!


Starting with version 2.0.5 of the extension, a third boolean argument (after $port) may be passed false in order to prevent this from happening.


->addServer(''4321false); // no socket i/o happens here

2019-05-21 20:23:08

    Поддержать сайт на родительском проекте КГБ