©
This document uses PHP Chinese website manual Release
(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — Add a task to get status
$job_handle
[, string &$context
] )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.
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 ++;
}
?>
以上例程的输出类似于:
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