(PECL gearman >= 0.5.0)
GearmanClient::doStatus — Obtiene el estado de la tarea en ejecución
Retorna el estado para la tarea en ejecución. Debería usarse entre llamadas repetidas a GearmanClient::doNormal().
Esta función no tiene parámetros.
Un array representando el porcentaje completado dado como una fracción, el primer elemento es el numerador y el segundo es el denominador.
Ejemplo #1 Obtiene el estado de un trabajo en ejecución de larga duración
El trabajador de este ejemplo tiene un retardo artificial añadido durante el procesado del string a dar la vuelta. Tras cada retardo, se llama a GearmanJob::status() que el cliente recoge.
<?php
echo "Starting\n";
# Crea el objeto del cliente
$gmclient= new GearmanClient();
# Añade el servidor por defecto (localhost).
$gmclient->addServer();
echo "Sending job\n";
# Envía el trabajo "reverse"
do
{
$result = $gmclient->doNormal("reverse", "Hello!");
# Comprueba retorno de posibles paquetes y errores
switch($gmclient->returnCode())
{
case GEARMAN_WORK_DATA:
break;
case GEARMAN_WORK_STATUS:
# Obtiene el estado del trabajo actual
list($numerator, $denominator)= $gmclient->doStatus();
echo "Status: $numerator/$denominator complete\n";
break;
case GEARMAN_WORK_FAIL:
echo "Failed\n";
exit;
case GEARMAN_SUCCESS:
break;
default:
echo "RET: " . $gmclient->returnCode() . "\n";
exit;
}
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);
echo "Success: $result\n";
?>
El resultado del ejemplo sería algo similar a:
Starting Sending job Status: 1/6 complete Status: 2/6 complete Status: 3/6 complete Status: 4/6 complete Status: 5/6 complete Status: 6/6 complete Success: !olleH