(PECL gearman >= 0.5.0)
GearmanClient::addServer — Add a job server to the client
$host
= 127.0.0.1
[, int $port
= 4730
]] )Adds a job server to a list of servers that can be used to run a task. No socket I/O happens here; the server is simply added to the list.
host
The job server host name.
port
The job server port.
Returns TRUE
on success or FALSE
on failure.
Example #1 Adding two job servers
<?php
# Create our client object.
$gmclient= new GearmanClient();
# Add two job servers, the first on the default 4730 port
$gmclient->addServer("10.0.0.1");
$gmclient->addServer("10.0.0.2", 7003);
?>
Amit, kosta250
I found a workaround to avoid the dead servers and continue with rest alive.
<?php
$servers = array(
array('host' => '127.0.0.1', 'port' => '4730'),
array('host' => '127.0.0.1', 'port' => '4731'),
array('host' => '127.0.0.1', 'port' => '4732'),
array('host' => '127.0.0.2', 'port' => '4730')
);
$client= new \GearmanClient();
foreach($servers as $server) {
$c = new \GearmanClient();
$c->addServer($server['host'], $server['port']);
if (@$c->ping('ping')) {
$client->addServer($server['host'], $server['port']);
}
}
?>
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.
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.
Thanks
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/connection.cc:430
This happens if you don't provide a port.
Just set the second parameter to 4730 and it is working again.