(PECL gearman >= 0.5.0)
GearmanClient::jobStatus -- gearman_job_status — Obtiene el estado de un trabajo en segundo plano
Estilo orientado a objetos (método):
$job_handle
)Obtiene el estado de un trabajo en segundo plano para un manejador de trabajo dado. La información de estado estecifica si el trabajo es conocido, si está ejecutandose actualmente y el porcentaje completado.
job_handle
El manipulador de la tarea asignado por el servidor Gearman
Un array que contiene la información del estado para el trabajo correspondiente al manejador de trabajo indicado. El primer elemento del array es un boolean indicando si el trabajo es conocido, el segundo es un boolean indicando si el trabajo se está ejecutando y el tercer y cuarto elemento corresponden al numerador y denonimador del porcenaje de trabajo completado, respectivamente.
Ejemplo #1 Monitorización del estado de un trabajo ejecutandose en segundo plano
<?php
/* Creamos el objeto */
$gmclient= new GearmanClient();
/* Añadimos el servidor por defecto */
$gmclient->addServer();
/* Ejecutamos el cliente "reverse" */
$job_handle = $gmclient->doBackground("reverse", "this is a test");
if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
echo "bad return code\n";
exit;
}
$done = false;
do
{
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // the job is known so it is not done
$done = true;
echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";
}
while(!$done);
echo "done!\n";
?>
El resultado del ejemplo sería algo similar a:
Running: true, numerator: 3, denomintor: 14 Running: true, numerator: 6, denomintor: 14 Running: true, numerator: 9, denomintor: 14 Running: true, numerator: 12, denomintor: 14 Running: false, numerator: 0, denomintor: 0 done!