首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gearman客户端doBackground始终返回GEARMAN_TIMEOUT

Gearman客户端doBackground始终返回GEARMAN_TIMEOUT
EN

Stack Overflow用户
提问于 2012-10-16 06:56:56
回答 2查看 1.9K关注 0票数 1

所以,我现在有一个简单的变速箱系统在运行,有一个工人在运行。

worker基本上只获取有效负载(在本例中是一个随机数),并将其回显到屏幕上。字面上是一个echo,而不是返回给客户端。

客户端发送随机数。我正在尝试做一个$client->doBackground( 'post', 65482, md5(uniqid()));,但每次都返回一个47错误(GEARMAN_TIMEOUT)。

getErrNo()返回0,error()返回有关GEARMAN_TIMEOUT的信息

但是,当我将其更改为只使用$client->do(blah, blah, blah)时,它工作得很好。

我甚至偶尔会看到,即使在收到超时错误后,工作人员仍然会回显数字……

代码语言:javascript
复制
public function execute()
    {
        $method = 'do';
        if( !$this->getBlock() )
        {
            $method .= ( $this->getPriority() == 'Normal' ? '' : $this->getPriority() ) . 'Background';
        }
        else
        {
            $method .= $this->getPriority();
        }
        echo "Method: $method \t Worker: {$this->getName()} \t Payload: {$this->getPayload()} \t Hash: {$this->getHash()}\n";
        $this->setResult(
            $this->getClient()
                ->$method(
                    $this->getName(),
                    $this->getPayload(),
                    $this->getHash()
                )
        );
        if( $this->getClient()->returnCode() != GEARMAN_SUCCESS )
        {
            echo "Code: " . $this->getClient()->returnCode() . "\t" . GEARMAN_TIMEOUT . "\n";
        }
    }

回声带回来了

Method: doHighBackground Worker: leadposter Payload: 10930 Hash: 091878f5965e4a1de2992c607b3c562b240792a6

以下是错误信息

代码语言:javascript
复制
["error":"Uecode\GearmanBundle\Gearman\Job":private]=>
  array(4) {
    ["attempts"]=>
    int(3)
    ["return_code"]=>
    int(47)
    ["error_no"]=>
    int(0)
    ["error"]=>
    string(103) "gearman_wait(GEARMAN_TIMEOUT) timeout reached, no servers were available -> libgearman/universal.cc:325"
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-17 05:12:24

解决了它。

跨方法的连接没有持久化...因此,构建一个服务器池,并在运行作业之前连接到服务器

票数 0
EN

Stack Overflow用户

发布于 2019-10-31 03:50:14

如果您的gearmand在另一个端口上,请确保AddServers知道,否则将GEARMAN_TIMEOUT

gearmand -d -p 4769

$worker->addServers(127.0.0.1:4769);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12905172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档