Php/docs/gearmanclient.addtaskstatus

来自菜鸟教程
跳转至:导航、​搜索

GearmanClient::addTaskStatus

(PECL gearman >= 0.5.0)

GearmanClient::addTaskStatusAdd a task to get status


说明

public GearmanClient::addTaskStatus ( string $job_handle [, string &$context ] ) : GearmanTask

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/* create our object */$gmclient= new GearmanClient();/* add the default server */$gmclient->addServer();/* start some background jobs and save the handles */$handles = array();$handles[0] = $gmclient->doBackground("reverse", "Hello World!");$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");$gmclient->setStatusCallback("reverse_status");/* Poll the server to see when those background jobs finish; *//* a better method would be to use event callbacks */do{   /* Use the context variable to track how many tasks have completed */   $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

参见