GearmanClient::addTaskStatus

(PECL gearman >= 0.5.0)

GearmanClient::addTaskStatusAñade una tarea para obtener el estado

Descripción

public GearmanClient::addTaskStatus ( string $job_handle [, string &$context ] ) : GearmanTask

Usado para pedir información de estado del servidor Gearman que llamará a la función de retorno especificada (usando el método GearmanClient::setStatusCallback()).

Parámetros

job_handle

Manejador de la tarea a obtener el estado

context

Datos a pasar en la llamada a la función de retorno para el estado, generalmente una referencia a un array u objeto.

Valores devueltos

Un objeto GearmanTask.

Ejemplos

Ejemplo #1 Monitor para el estado de finalización de múltiples tareas en segundo plano

Se introduce un retardo artificial en el trabajador del ejemplo para simular un proceso de larga duración. Únicamente se ejecuta un trabajador para este ejemplo.

<?php

/* Creamos el objeto */
$gmclient= new GearmanClient();

/* Añadimos el servidor por defecto */
$gmclient->addServer();

/* Iniciamos varios trabajos en segundo plano y grabamos los manejadores */
$handles = array();
$handles[0] = $gmclient->doBackground("reverse""Hello World!");
$handles[1] = $gmclient->doBackground("reverse""!dlroW olleH");

$gmclient->setStatusCallback("reverse_status");

/* Preguntamos constantemente al servidor para ver cuándo terminan los trabajos.
/* mejor método sería usar llamadas de retorno en los eventos */
do
{
   
/* Usar la variable en contexto para seguir cuántas tareas han finalizado */
   
$done 0;
   
$gmclient->addTaskStatus($handles[0], &$done);
   
$gmclient->addTaskStatus($handles[1], &$done);
   
$gmclient->runTasks();
   echo 
"Done: $done\n";
   
sleep(1);
}
while (
$done != 2);

function 
reverse_status($task$done)
{
   if (!
$task->isKnown())
      
$done++;
}

?>

El resultado del ejemplo sería algo similar a:

Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 2

Ver también