GearmanWorker::addServer
(PECL gearman >= 0.5.0)
GearmanWorker::addServer — Add a job server
Description
public bool GearmanWorker::addServer
([ string
$host
= 127.0.0.1
[, int $port
= 4730
]] )Adds a job server to this worker. This goes into a list of servers than can be used to run jobs. No socket I/O happens here.
Parameters
-
host
-
The job server host name.
-
port
-
The job server port.
Return Values
Returns TRUE
on success or FALSE
on failure.
Examples
Example #1 Add alternate Gearman servers
<?php
$worker= new GearmanWorker();
$worker->addServer("10.0.0.1");
$worker->addServer("10.0.0.2", 7003);
?>
- Функция GearmanWorker::addFunction() - Регистрация и добавление callback-функции
- Функция GearmanWorker::addOptions() - Добавление настроек обработчика
- Функция GearmanWorker::addServer() - Добавление сервера заданий
- Функция GearmanWorker::addServers() - Добавление нескольких серверов заданий
- Функция GearmanWorker::clone() - Создание копии обработчика
- Функция GearmanWorker::__construct() - Создание объекта GearmanWorker
- Функция GearmanWorker::echo() - Проверка отклика серверов заданий
- Функция GearmanWorker::error() - Получение последней обнаруженной ошибки
- Функция GearmanWorker::getErrno() - Получение номера ошибки
- Функция GearmanWorker::options() - Получение настроек обработчика
- Функция GearmanWorker::register() - Регистрация функции на сервере заданий
- Функция GearmanWorker::removeOptions() - Удаление настроек обработчика
- Функция GearmanWorker::returnCode() - Получение последнего кода возврата Gearman
- GearmanWorker::setId
- Функция GearmanWorker::setOptions() - Задание настроек обработчика
- Функция GearmanWorker::setTimeout() - Задание таймаута ожидания ввода/вывода на сокете
- Функция GearmanWorker::timeout() - Получение значения таймаута ожидания запросов на сокете
- Функция GearmanWorker::unregister() - Удалить регистрацию имени функции на всех серверах заданий
- Функция GearmanWorker::unregisterAll() - Удаление регистрации всех имен функций на серверах заданий
- Функция GearmanWorker::wait() - Ожидание запроса от какого-либо сервера задач
- Функция GearmanWorker::work() - Ожидание задания и его немедленное выполнение
Коментарии
If you suddenly start getting a:
PHP Fatal error: Uncaught exception 'GearmanException' with message 'Failed to set exception option' in
...on your GearmanWorker::work() calls, I was able to fix this by specifying values to GearmanWorker::addServer(), even if they are the same as the documented default values.
Crashes:
<?php
$gmw = new GearmanWorker();
$gmw->addServer();
$gmw->work();
?>
Works:
<?php
$gmw = new GearmanWorker();
$gmw->addServer("127.0.0.1", 4730);
$gmw->work();
?>
Go figure. :)
The manual states that you get a TRUE on success and FALSE on failure. When I have attempted to connect to a server that is powered off I still get TRUE. The return from returnCode() is 0 which is the same as the returnCode() from a successful connection.
I have not yet found a way around this.
No socket I/O happens in addserver.
To properly test the server added you could use the following code:
<?php
// create the worker
$worker= new GearmanWorker();
// add the job server (bad host/port)
$worker->addServer('127.0.0.2', 4731);
// define a variable to hold application data
$count = 0;
// add the reverse function
$worker->addFunction('reverse', 'my_reverse_function', $count);
// test job server response
if (!@$worker->echo('test data')) {
die($worker->error());
}
// start the worker listening for job submissions
while ($worker->work());
function my_reverse_function($job, &$count)
{
$count++;
return $count . ': ' . strrev($job->workload()) . "\n";
}
?>
On Ubuntu (php7 php-gearman/xenial,now 2.0.2+1.1.2-1+deb.sury.org~xenial+1 amd64) this function throws a GearmanException.
Please use in try catch
PHP Fatal error: Uncaught exception 'GearmanException' with message 'Failed to set exception option'
also indicates the gearmand daemon is not running.
I was receving following message on add server Uncaught exception 'GearmanException' with message 'Failed to set exception option' in <<filename>>:<<linenumber >>
was on centos 6.5
fixed by following steps:
yum install gearmand
/etc/init.d/gearmand start