(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — Adiciona uma tarefa para obter status
Usado para solicitar informações de status do servidor Gearman, que chamará a função de retorno de status especificada (definida usando GearmanClient::setStatusCallback()).
job_handle
O identificador de tarefa para a qual o status será obtido.
context
Dados a serem passados para a função de retorno de status, geralmente uma referência a um array ou objeto.
Um objeto GearmanTask ou false
em caso de falha.
Exemplo #1 Monitora a conclusão de várias tarefas em segundo plano
Um atraso artificial é introduzido no trabalhador neste exemplo para simular um processo de longa execução. Há apenas um trabalhador em execução para este exemplo.
<?php
/* Cria o objeto */
$gmclient= new GearmanClient();
/* Adiciona o servidor padrão */
$gmclient->addServer();
/* Inicia alguns trabalhos em segundo plano e salva os identificadores */
$handles = array();
$handles[0] = $gmclient->doBackground("reverse", "Hello World!");
$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");
$gmclient->setStatusCallback("reverse_status");
/* Pesquisa o servidor para ver quando esses trabalhos em segundo plano terminam; */
/* um método melhor seria usar funções de retorno de eventos */
do
{
/* Usa a variável de contexto para rastrear quantas tarefas foram concluídas */
$done = 0;
$gmclient->addTaskStatus($handles[0], $done);
$gmclient->addTaskStatus($handles[1], $done);
$gmclient->runTasks();
echo "Realizadas: $done\n";
sleep(1);
}
while ($done != 2);
function reverse_status($task, $done)
{
if (!$task->isKnown())
$done++;
}
?>
O exemplo acima produzirá algo semelhante a:
Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 0 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 1 Realizadas: 2