문제

It's seems that setCompleteCallback not working at me. What i'm doing wrong? Thanks.

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

This is my worker. Still not works. Maybe i need something else?

도움이 되었습니까?

해결책

You should to set complete callback before adding tasks.

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

다른 팁

You have to send complete status in your worker script. GearmanJob::sendComplete.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top