1

给定这行代码来回调一个函数和回调函数本身:

Class MyClass {
    public function doThings() {
        $this->gearman->client->setCompleteCallback("workerCompleted");
    }

    public function workerCompleted() {
        echo "worker is completed!";
    }
}

我明白了Message: GearmanClient::setCompleteCallback(): function workerCompleted is not callable

setCompleteCallback方法需要引号中的函数名称,但是如何调用类方法?$this->"workerCompleted"显然是错误的。

4

2 回答 2

5
$this->gearman->client->setCompleteCallback("workerCompleted");

应该

$this->gearman->client->setCompleteCallback( array( $this, "workerCompleted"));

因为您正在指定一个成员函数的回调,它需要一个需要调用的对象(或类名)的数组以及函数的名称。文档中的更多信息。

于 2013-01-30T14:25:47.047 回答
0

也许您使用该doBackground功能将代码发送到 gearman 服务器?这确实不使用回调,因为根据定义,您不关心作业状态并导致您的应用程序代码。

于 2013-02-20T19:22:40.640 回答