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コードをギアマンサーバーに送信する機能を使用した可能性がありますか?定義上、ジョブのステータスやアプリケーション コードの結果は気にしないため、これは実際にはコールバックを使用しません。

于 2013-02-20T19:22:40.640 に答える