Php/docs/gearmanclient.addtaskstatus
GearmanClient::addTaskStatus
(PECL gearman >= 0.5.0)
GearmanClient::addTaskStatus — Add 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
范例
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