函数名:GearmanClient::setStatusCallback()
适用版本:GearmanClient 类在 PHP 5 >= 5.3.0, PECL gearman >= 0.5.0 版本中可用。
用法: GearmanClient::setStatusCallback() 方法用于设置状态回调函数,该回调函数将在 Gearman 服务器发送状态更新时被调用。
语法:
public bool GearmanClient::setStatusCallback ( callable $callback )
参数:
$callback
:必需,回调函数,当状态更新时会被调用。回调函数的格式为function callback (GearmanTask $task) {}
。其中,$task
是一个 GearmanTask 对象,表示当前任务的状态信息。
返回值:
- 成功时返回
true
,失败时返回false
。
示例:
function statusCallback(GearmanTask $task) {
$jobHandle = $task->jobHandle();
$taskNumerator = $task->taskNumerator();
$taskDenominator = $task->taskDenominator();
echo "Job handle: $jobHandle, Completed: $taskNumerator/$taskDenominator\n";
}
$client = new GearmanClient();
$client->addServer('localhost');
$client->setStatusCallback('statusCallback');
$task = $client->doBackground('task_name', 'task_data');
// 执行其他任务
while ($client->runTasks()) {
// 等待所有任务执行完毕
}
$client->clearCallbacks();
在上面的示例中,我们创建了一个 GearmanClient 对象,并添加了一个 Gearman 服务器。然后,我们设置了 setStatusCallback()
方法的回调函数为 statusCallback()
。在回调函数中,我们获取了任务的句柄、已完成的任务数量和总任务数量,并将其输出。最后,我们执行了一个后台任务并等待所有任务执行完毕。