函数名:GearmanWorker::work()
适用版本:GearmanWorker::work() 函数在 PHP 5 >= 5.3.0 及 PHP 7 中可用。
用法:GearmanWorker::work() 函数用于启动 Gearman worker 进程并开始监听任务队列,当有任务到达时,worker 将执行相应的任务处理函数。
语法:
public bool GearmanWorker::work ([ callable $callback [, int &$timeout ]] )
参数:
- callback(可选):一个可调用的函数,用于处理任务。如果没有传递此参数,worker 将使用默认任务处理函数。
- timeout(可选):一个整数,表示 worker 在没有任务时的超时时间(以毫秒为单位)。默认值为无限超时。
返回值:
- 成功时返回 true,失败时返回 false。
示例:
<?php
// 创建 Gearman worker 对象
$worker = new GearmanWorker();
// 添加 Gearman 服务器
$worker->addServer('127.0.0.1', 4730);
// 设置任务处理函数
$worker->addFunction('reverse_string', 'reverseString');
// 定义任务处理函数
function reverseString($job)
{
$workload = $job->workload();
$result = strrev($workload);
// 处理完任务后,返回处理结果
return $result;
}
// 启动 worker 进程并监听任务队列
while ($worker->work()) {
if ($worker->returnCode() != GEARMAN_SUCCESS) {
echo "Worker failed: " . $worker->returnCode() . "\n";
break;
}
}
?>
在上面的示例中,我们创建了一个 Gearman worker 对象,并添加了 Gearman 服务器的连接信息。然后,我们使用 addFunction()
方法将任务处理函数 reverseString()
与任务名称 reverse_string
关联起来。在 reverseString()
函数中,我们将传入的任务载荷进行反转,并返回处理结果。最后,通过调用 work()
方法启动 worker 进程,并开始监听任务队列。当有任务到达时,worker 将自动调用相应的处理函数进行处理。