(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — Add a task to get status
Used to request status information from the Gearman server, which will call the specified status callback (set using GearmanClient::setStatusCallback()).
job_handle
The job handle for the task to get status for
context
Data to be passed to the status callback, generally a reference to an array or object
A GearmanTask object or false
on failure.
Example #1 Monitor completion of multiple background tasks
An artificial delay is introduced in the worker in this example to simulate a long running process. There is only one worker running for this example.
<?php
$gmclient= new GearmanClient();
$gmclient->addServer();
$handles = array();
$handles[0] = $gmclient->doBackground("reverse", "Hello World!");
$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");
$gmclient->setStatusCallback("reverse_status");
do
{
$done = 0;
$gmclient->addTaskStatus($handles[0], &$done);
$gmclient->addTaskStatus($handles[1], &$done);
$gmclient->runTasks();
echo "Done: $done\n";
sleep(1);
}
while ($done != 2);
function reverse_status($task, $done)
{
if (!$task->isKnown())
$done++;
}
?>
The above example will output something similar to:
Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 0 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 1 Done: 2