2013-06-18 4 views
0

Il semble que setCompleteCallback ne fonctionne pas chez moi. Qu'est-ce que je fais mal? Merci.Gearman setCompleteCallback ne fonctionne pas

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

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

    echo "Sending job\n"; 

    $client->addTask("reverse", "Hello!", null, "1"); 
    $client->addTask("reverse", "Hello!", null, "2"); 
    $client->setCompleteCallback("complete"); 
    $client->runTasks(); 

    function complete($task) 
    { 
     print "Выполнено: " . $task->unique() . ", " . $task->data() . "\n"; 
    } 

    ?> 

EDIT:

<?php 
$worker = new GearmanWorker(); 
$worker->addServer("127.0.0.1", 4730); 
$worker->addFunction("reverse", "reverse_fn"); 
while (1) { 
    $ret = $worker->work(); 
    if ($worker->returnCode() != GEARMAN_SUCCESS) 
     break; 
} 
function reverse_fn($job) 
{ 
    $workload = $job->workload(); 
    sleep(5); 
    $result = strrev($workload); 
    $job->sendComplete($result); 
    return $result; 
} 
?> 

Ceci est mon travailleur. Toujours pas fonctionne. Peut-être que j'ai besoin d'autre chose?

+0

S'il vous plaît, montrez le script de travail. –

+0

Ok mon travailleur est en poste – sandra1n

Répondre

3

Vous devez définir un rappel complet avant d'ajouter des tâches.

$client->setCompleteCallback("complete"); 
$client->addTask("reverse", "Hello!", null, "1"); 
$client->addTask("reverse", "Hello!", null, "2"); 
+0

Vous sauvez ma journée! – sandra1n