ScotlandPHP 2016

GearmanClient::addServer

(PECL gearman >= 0.5.0)

GearmanClient::addServerAdd a job server to the client

Descrizione

public bool GearmanClient::addServer ([ string $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.

Elenco dei parametri

host

L'hostname del job server.

port

La porta del job server.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

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);

?>

Vedere anche:

add a note add a note

User Contributed Notes 5 notes

up
0
brainreflex at gmail dot com
8 months ago
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']);
  }
}

?>
up
0
kosta250 at gmail dot com
9 months ago
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.
up
0
Amit
2 years ago
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
up
0
info at phpgangsta dot de
3 years ago
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.
To Top