PHP Gearman worker 从服务器检索任务。当我们没有任何新任务时,我们会在后台做一些其他的工作。请检查下面的实现。
$worker = new GearmanWorker();
$worker->addServer('host', 123);
$worker->addFunction('name', array($this, 'function'));
$worker->setTimeout(5000);
while ($worker->work() || GEARMAN_TIMEOUT == $worker->returnCode()) {
if (GEARMAN_TIMEOUT == $worker->returnCode()) {
$this->handleTimeout();
} elseif (GEARMAN_SUCCESS != $worker->returnCode()) {
$this->handleFail();
break;
}
}
代码看起来很简单,大部分时间都可以正常工作。但是当由于某种原因脚本无法连接到服务器时,$worker->returnCode()
等于GEARMAN_TIMEOUT
.
$worker->returnCode()
值是一样的
- 当我们没有任何新任务时
- 当脚本无法连接到服务器时
当脚本无法连接到服务器时,错误消息和代码如下:
$worker->error()
gearman_worker_grab_job(GEARMAN_TIMEOUT) 达到选项超时返回 -> libgearman/worker.cc:869
$worker->getErrno()
0
当客户端无法连接到服务器时如何捕获错误?