函数名:GearmanClient::setClientCallback()
适用版本:Gearman PECL 扩展版本 0.5.0 及以上
用法:该函数用于设置客户端的回调函数,当客户端接收到任务状态更新时,会调用该回调函数进行处理。
语法:
public bool GearmanClient::setClientCallback ( callable $callback )
参数:
- callback: 必需,指定一个可调用的回调函数,用于处理任务状态更新。回调函数接受两个参数:$task 和 $context。$task 是一个 GearmanTask 对象,包含任务的状态信息;$context 是用户自定义的上下文数据。
返回值:
- 设置成功返回 true,否则返回 false。
示例:
<?php
$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);
$client->setClientCallback(function(GearmanTask $task, $context) {
// 处理任务状态更新
echo "Task status: " . $task->taskNumerator() . "/" . $task->taskDenominator() . PHP_EOL;
}, null);
// 添加一个后台任务
$task = $client->addTaskBackground('task_function', 'task_data');
// 提交任务并等待结果
$client->runTasks();
?>
在上面的示例中,我们创建了一个 GearmanClient 对象,并通过addServer()
方法添加了一个 Gearman 服务器。然后,我们使用setClientCallback()
方法设置了一个回调函数来处理任务状态更新。在回调函数中,我们通过taskNumerator()
和taskDenominator()
方法获取任务的当前进度,并进行相应的处理。最后,我们通过addTaskBackground()
方法添加了一个后台任务,然后通过runTasks()
方法提交任务并等待结果。
注意:在使用该函数之前,需要先安装 Gearman PECL 扩展,并在 PHP 配置文件中启用该扩展。