2013-09-30 4 views
3

iam은 php-gearman에 초보자이고 몇 가지 유용한 자습서 덕분에 몇 가지 예를 시도했습니다. 위의 기본 코드와 같습니다.데이터 가져 오기 성공적인 작업자 실행 후 gearman

클라이언트 측이 코드는 나에게 작업 상태를 가져옵니다

<?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; 
} 
?> 

<?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); 
} 
?> 

서버 측.

GermanClient :: doBackground를 사용하는 동안 성공한 작업자 실행 후 반환 된 데이터를 가져 오는 방법은 무엇입니까?

답변

0

이 스레드는 고대이지만 일부는 작업 핸들러가있는 일종의 데이터베이스를 열로 사용할 수 있습니다. 그런 다음 나중에 작업 핸들을 쿼리 할 수 ​​있습니다.