2024年PHP日本大会

GearmanClient::setCompleteCallback

(PECL gearman >= 0.5.0)

GearmanClient::setCompleteCallback设置一个在任务完成后调用的函数

描述

public GearmanClient::setCompleteCallback(callable $callback): bool

用于设置一个回调函数,该函数在GearmanTask完成时或当工作进程调用GearmanJob::sendComplete()时(以先发生者为准)调用。

此回调函数仅在使用GearmanClient::runTasks()执行GearmanTask时执行。它不用于单个作业。

注意:

回调函数只有在调用此方法后添加的任务(例如,通过调用GearmanClient::addTask())才会被触发。

参数

callback

要调用的函数或方法。它应该返回一个有效的Gearman 返回值

如果没有返回语句,则默认为GEARMAN_SUCCESS

callback(GearmanTask $task, mixed $context): int
task

为此回调函数调用的任务。

context

传递给GearmanClient::addTask()(或等效方法)作为context的任何内容。

返回值

成功时返回true,失败时返回false

参见

添加注释

用户贡献的笔记 1 条笔记

Justas Butkus
13 年前
需要注意的是,回调函数必须返回有效的Gearman状态代码,或者不返回任何值(不要返回)。

例如,这些是有效的完成回调函数

<?php
function goodCallbackOne(GearmanTask $task)
{
print_r($task);
}
?>

<?php
function goodCallbackTwo(GearmanTask $task)
{
print_r($task);
return
GEARMAN_SUCCESS;
}
?>

而下面的代码则不是,除非您希望您的客户端代码因Gearman错误“german wait:no active file descriptors”而失败

<?php
function badCallbackTwo(GearmanTask $task)
{
print_r($task);
return
true;
}
?>
To Top