array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), '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' => 'es', '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 — Registra y añade una función de retorno
$function_name
,$function
,&$context
= ?,$timeout
= ?Registra el nombre de una función en el servidor de trabajos y especifica la llamada de retorno quer corresponde a esa función. Opcionalmente se puede especificar datos extra del contexto de aplicación para que sean usados cuando se realiza la llamada a la función de retorno o expira el tiempo máximo permitido.
function_name
Nombre de la función a registrar en el servidor de trabajos
function
Función de retorno a llamar cuando el trabajo para el nombre de función registrado es enviado
context
Referencia a datos de contexto de la aplicación que pueden ser modificados por la la función del trabajador
timeout
Intervalo de tiempo en segundos
Ejemplo #1 Sencillo trabajador que usa los datos de contexto de aplicación
<?php
# obtiene un trabajador gearman
$worker= new GearmanWorker();
# añade el servidor por defecto (localhost)
$worker->addServer();
# define una variable en la que mantener los datos de aplicación
$count= 0;
# añade la función "reverse"
$worker->addFunction("reverse", "reverse_cb", $count);
# inicia el trabajador
while ($worker->work());
function reverse_cb($job, &$count)
{
$count++;
return "$count: " . strrev($job->workload());
}
?>
Ejecutando un cliente que envía dos trabajos para la función "reverse", tendrá un resultado similar a este:
1: olleh 2: dlrow