©
This document uses PHP Chinese website manual Release
(PECL gearman >= 0.5.0)
GearmanClient::doBackground — Run a task in the background
$function_name
, string $workload
[, string $unique
] )Runs a task in the background, returning a job handle which can be used to get the status of the running task.
function_name
由程序自动执行的已注册函数。
workload
被处理的序列化数据。
unique
用于标识特定任务的唯一性 ID。
The job handle for the submitted task.
Example #1 Submit and monitor a background job
The worker in this example has an artificial delay introduced to mimic a long running job. The client script periodically checks the status of the running job.
<?php
$gmclient = new GearmanClient ();
$gmclient -> addServer ();
$job_handle = $gmclient -> doBackground ( "reverse" , "this is a test" );
if ( $gmclient -> returnCode () != GEARMAN_SUCCESS )
{
echo "bad return code\n" ;
exit;
}
$done = false ;
do
{
sleep ( 3 );
$stat = $gmclient -> jobStatus ( $job_handle );
if (! $stat [ 0 ]) // the job is known so it is not done
$done = true ;
echo "Running: " . ( $stat [ 1 ] ? "true" : "false" ) . ", numerator: " . $stat [ 2 ] . ", denomintor: " . $stat [ 3 ] . "\n" ;
}
while(! $done );
echo "done!\n" ;
?>
以上例程的输出类似于:
Running: true, numerator: 3, denomintor: 14 Running: true, numerator: 6, denomintor: 14 Running: true, numerator: 9, denomintor: 14 Running: true, numerator: 12, denomintor: 14 Running: false, numerator: 0, denomintor: 0 done!