(PECL gearman >= 0.6.0)
GearmanWorker::wait — 等待来自某个作业服务器的活动
当在非阻塞 I/O 模式下运行时,使工作进程等待来自某个 Gearman 作业服务器的活动。如果失败,则发出一个 **E_WARNING
**,并包含最后遇到的 Gearman 错误。
此函数没有参数。
示例 #1 在非阻塞模式下运行工作进程
<?php
echo "Starting\n";
# 创建我们的工作进程对象
$worker= new GearmanWorker();
# 使工作进程为非阻塞
$worker->addOptions(GEARMAN_WORKER_NON_BLOCKING);
# 添加默认服务器(localhost,端口 4730)
$worker->addServer();
# 添加我们的反转函数
$worker->addFunction('reverse', 'reverse_fn');
# 尝试获取一个作业
while (@$worker->work() ||
$worker->returnCode() == GEARMAN_IO_WAIT ||
$worker->returnCode() == GEARMAN_NO_JOBS)
{
if ($worker->returnCode() == GEARMAN_SUCCESS)
continue;
echo "Waiting for next job...\n";
if (!@$worker->wait())
{
if ($worker->returnCode() == GEARMAN_NO_ACTIVE_FDS)
{
# 我们没有连接到任何服务器,因此在尝试重新连接之前等待一段时间。
#
sleep(5);
continue;
}
break;
}
}
echo "Worker Error: " . $worker->error() . "\n";
function reverse_fn($job)
{
return strrev($job->workload());
}
?>