PHP
Gearman

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!