函数名:GearmanClient::setDataCallback()
适用版本:GearmanClient 0.6.0 或更高版本
用法:setDataCallback() 方法用于设置 Gearman 任务的数据回调函数。当 Gearman 服务端发送数据给客户端时,该回调函数将被调用。
语法:bool GearmanClient::setDataCallback ( callable $callback )
参数:
- $callback:回调函数,用于处理接收到的数据。回调函数的参数为接收到的数据,返回值为布尔值。
返回值:成功时返回 TRUE,失败时返回 FALSE。
示例:
// 创建 Gearman 客户端对象
$client = new GearmanClient();
// 添加 Gearman 服务端的 IP 和端口
$client->addServer("127.0.0.1", 4730);
// 设置数据回调函数
$client->setDataCallback(function($data) {
// 处理接收到的数据
echo "Received data: " . $data . "\n";
return true; // 返回 true 表示成功处理数据
});
// 向 Gearman 服务端发送任务请求
$client->doNormal("my_task", "my_data");
// 等待任务完成
while ($client->work() || $client->returnCode() == GEARMAN_IO_WAIT) {
if ($client->returnCode() != GEARMAN_SUCCESS) {
echo "An error occurred: " . $client->error() . "\n";
break;
}
}
// 断开与 Gearman 服务端的连接
$client->clearCallbacks();
$client->disconnect();
上述示例中,我们首先创建了一个 Gearman 客户端对象,并添加了要连接的 Gearman 服务端的 IP 和端口。然后使用 setDataCallback() 方法设置了一个回调函数,用于处理接收到的数据。在此示例中,我们简单地将接收到的数据打印到控制台上。接着,我们发送一个任务请求给 Gearman 服务端,并通过 work() 方法等待任务完成。最后,我们断开与 Gearman 服务端的连接,并清除回调函数。