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
(PECL gearman >= 0.5.0)
GearmanClient::jobStatus -- gearman_job_status — Recupera el estado de un trabajo en segundo plano
Estilo orientado a objetos (método) :
Recupera el estado de un trabajo en segundo plano para el gestor de trabajos proporcionado. Las informaciones de estado especifican si el trabajo es conocido, si el trabajo está actualmente en ejecución, así como el porcentaje de realización.
job_handle
El manipulador de la tarea asignado por el servidor Gearman
Un array que contiene las informaciones de estado para el trabajo correspondiente al gestor de trabajos proporcionado. El primer elemento es un bool indicando si el trabajo es conocido, el segundo es un bool indicando si el trabajo está en ejecución, el tercero y el cuarto corresponden al numerador y denominador del porcentaje de realización.
Ejemplo #1 Supervisa el estado de un trabajo en segundo plano que tarda en ejecutarse
<?php
/* Crea un cliente */
$gmclient= new GearmanClient();
/* Añade un servidor por defecto */
$gmclient->addServer();
/* Ejecuta el cliente */
$job_handle = $gmclient->doBackground("reverse", "this is a test");
if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
echo "Código de retorno incorrecto\n";
exit;
}
$done = false;
do
{
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // el trabajo es conocido, significando que no ha terminado
$done = true;
echo "Ejecución : " . ($stat[1] ? "true" : "false") . ", numerador : " . $stat[2] . ", denominador : " . $stat[3] . "\n";
}
while(!$done);
echo "hecho !\n";
?>
El resultado del ejemplo sería algo similar a:
Ejecución : true, numerador : 3, denominador : 14 Ejecución : true, numerador : 6, denominador : 14 Ejecución : true, numerador : 9, denominador : 14 Ejecución : true, numerador : 12, denominador : 14 Ejecución : false, numerador : 0, denominador : 0 hecho !
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
@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