array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'gearmanworker.addfunction.php', 1 => 'GearmanWorker::addFunction', ), 'up' => array ( 0 => 'class.gearmanworker.php', 1 => 'GearmanWorker', ), 'prev' => array ( 0 => 'class.gearmanworker.php', 1 => 'GearmanWorker', ), 'next' => array ( 0 => 'gearmanworker.addoptions.php', 1 => 'GearmanWorker::addOptions', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/gearman/gearmanworker/addfunction.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL gearman >= 0.5.0)
GearmanWorker::addFunction — Регистрация и добавление callback-функции
$function_name
,$function
,$context
= null
,$timeout
= 0Регистрирует имя функции на сервере заданий и добавляет ссылку на эту функцию для обратного вызова. Необязательно можно задать дополнительные данные контекста, которые будет использоваться во время вызова callback-функции и время ожидания.
function_name
Имя функции, которое необходимо зарегистрировать на сервере заданий.
function
Callback-функция, которая будет вызываться, когда сервер получит задание для зарегистрированного имени.
context
Ссылка на произвольные данные контекста приложения, к которым нужно обеспечить доступ из функции.
timeout
Временной интервал в секундах
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Простой обработчик использует дополнительные данные контекста приложения
<?php
# получаем обработчик gearman
$worker= new GearmanWorker();
# добавляем сервер по умолчанию (localhost)
$worker->addServer();
# определяем переменную, в которой будут храниться данные приложения
$count= 0;
# добавляем функцию "reverse"
$worker->addFunction("reverse", "reverse_cb", $count);
# запускаем обработчик
while ($worker->work());
function reverse_cb($job, &$count)
{
$count++;
return "$count: " . strrev($job->workload());
}
?>
Если клиент пошлёт два задания для функции reverse, то вывод будет следующим:
1: olleh 2: dlrow