2013-09-30 20 views
3

iam新手到PHP齿轮人和一些有用的教程的帮助下,我试了一些例子。像上面的基本代码一样。获取数据成功的工人执行后,齿轮工

客户端

<?php 
# Create our client object. 
$client= new GearmanClient(); 

# Add default server (localhost). 
$client->addServer("localhost", 4730); 

echo "Sending job\n"; 

# Send reverse job 
$result = $client->doBackground("reverse", "Hello!"); 
$stat = $client->jobStatus($result); 
$done = false; 

$client->setWorkloadCallback('test'); 

function test($data) 
{ 
     echo $data; 
} 

while(!$done) 
{ 
     if(!$stat[0]) 
     { 
       $done = true; 
       echo $result; 
     } 
     echo "status".json_encode($stat)."/n"; 
     $stat = $client->jobStatus($result); 
} 
?> 

服务器端

<?php 
# Create our worker object. 
$worker= new GearmanWorker(); 

# Add default server (localhost). 
$worker->addServer("localhost", 4730); 

# Register function "reverse" with the server. 
$worker->addFunction("reverse", "reverse_fn"); 

while (1) 
{ 
    print "Waiting for job...\n"; 

    $ret= $worker->work(); 
    if ($worker->returnCode() != GEARMAN_SUCCESS) 
    break; 
} 

function reverse_fn($job) 
{ 
    $workload= $job->workload(); 
    echo "Received job: " . $job->handle() . "\n"; 
    echo "Workload: $workload\n"; 
    $result= strrev($workload); 
    echo "Result: $result\n"; 
    return $result; 
} 
?> 

此代码让我的工作状态。

我的问题是,虽然使用GermanClient :: doBackground如何获得成功的工人执行后返回的数据?

回答

0

虽然这个线程是古老的,但有些人可能会使用某种数据库,并将作业手柄作为列。之后您可以查询作业手柄。