CakeFest 2024: The Official CakePHP Conference

GearmanClient::jobStatus

gearman_job_status

(PECL gearman >= 0.5.0)

GearmanClient::jobStatus -- gearman_job_statusObtiene el estado de un trabajo en segundo plano

Descripción

Estilo orientado a objetos (método):

public GearmanClient::jobStatus(string $job_handle): array

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.

Parámetros

job_handle

El manipulador de la tarea asignado por el servidor Gearman

Valores devueltos

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.

Ejemplos

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!

Ver también

add a note

User Contributed Notes 2 notes

up
15
bot at boxconnect dot org
8 years ago
The example above reads:
if (!$stat[0]) // the job is known so it is not done

I think the comment is wrong, it should read "the job is unknown, so it is done".
Regards,
Jan
up
-2
richard@anon
6 years ago
@Jan

if (!$stat[0]) // the job is known so it is not done

I believe to be correct. I read it as, if $stat[0] returns anything but false, the job is currently running, so we are not done. However, if we cannot find $stat[0] (ie: the job handle no longer exists) then the job is done.

--Richard
To Top