给定这一行代码来回调函数和回调函数本身:
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"
显然是错误的。
答案 0 :(得分:5)
$this->gearman->client->setCompleteCallback("workerCompleted");
应该是
$this->gearman->client->setCompleteCallback( array( $this, "workerCompleted"));
因为您正在为成员函数指定回调,这需要一个需要调用的对象(或类名)的数组以及函数的名称。有关详情,请访问the docs。
答案 1 :(得分:0)
也许你使用doBackground
函数发送齿轮箱服务器的代码?这确实不使用Callback,因为根据定义,您不关心作业状态并导致应用程序代码。