GearmanClient::doBackground

(PECL gearman >= 0.5.0)

GearmanClient::doBackgroundRun a task in the background

説明

publicGearmanClient::doBackground(string$function, string$workload, ?string$unique = null): string

Runs a task in the background, returning a job handle which can be used to get the status of the running task.

パラメータ

function

ワーカーが実行するために登録した関数。

workload

シリアライズしたデータ。

unique

タスクを特定するために用いる一意な ID。

戻り値

The job handle for the submitted task.

例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] . ", denominator: " . $stat[3] . "\n";
}
while(!
$done);

echo
"done!\n";

?>

上の例の出力は、 たとえば以下のようになります。

Running: true, numerator: 3, denominator: 14 Running: true, numerator: 6, denominator: 14 Running: true, numerator: 9, denominator: 14 Running: true, numerator: 12, denominator: 14 Running: false, numerator: 0, denominator: 0 done!

参考

To Top