GearmanClient::doBackground
GearmanClient::doBackground
(PECL gearman >= 0.5.0)
GearmanClient :: doBackground - 在后台运行一个任务
描述
public string GearmanClient::doBackground ( string $function_name , string $workload [, string $unique ] )
在后台运行任务,返回可用于获取正在运行的任务状态的作业句柄。
参数
function_name
工作人员执行的注册功能
workload
要处理的序列化数据
unique
用于识别特定任务的唯一ID
返回值
提交的任务的作业处理。
例子
示例#1提交并监视后台作业
这个例子中的工作人员引入了一个虚假的延迟来模拟长时间运行的工作。客户端脚本定期检查正在运行的作业的状态。
<?php
/* create our object */
$gmclient= new GearmanClient(
/* add the default server */
$gmclient->addServer(
/* run reverse client */
$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!