sphinxsearch返回“无法发送客户端协议版本”

时间:2010-02-01 03:58:24

标签: sphinx

在我的一些服务器上,执行sphinx php查询会返回该错误。搜索谷歌我找不到任何东西,除了这是错误出现的部分原因:

// send my version
    // this is a subtle part. we must do it before (!) reading back from searchd.
    // because otherwise under some conditions (reported on FreeBSD for instance)
    // TCP stack could throttle write-write-read pattern because of Nagle.
    if (!$this->Send($fp, pack('N', 1), 4))
    {
      fclose($fp);
      $this->error = 'failed to send client protocol version';
      return false;
    }

我发现的结果是http://www.sphinxsearch.com/forum/view.html?id=4919

但我不知道sphinxapi.php在哪里(我使用手动编译安装)并且不确定这是不是一个好主意。

任何人都有任何想法?

4 个答案:

答案 0 :(得分:9)

我在服务器上遇到了同样的问题,我意识到我根本没有启动searchd守护进程。

希望这有帮助

答案 1 :(得分:0)

首先要确保您使用合适的ip for api库。 ip正在使用什么你可以看到

sphinx.config部分searchd {}。

如果没问题,下一步就是看狮身人面像状态

searchd --status

答案 2 :(得分:0)

问题可能出在错误的端口上。我在我的sphinx.config中设置了两个用于收听的端口:

searchd{
   listen = 9312
   listen = 9306:mysql41
}

当我尝试通过9306端口连接时,我收到了上面提到的错误。将其更改为9312解决了问题。

答案 3 :(得分:0)

我对Sphinx 2.2.8有同样的问题

我发现在这个版本中,searchd配置中的侦听端口集已被删除,现在端口为

listening on all interfaces, port=9312
listening on all interfaces, port=9306

因此,当您配置sphinx客户端使用端口9312适合我。即:

$sphinxClient = new SphinxClient()
$sphinxClient->SetServer("localhost", 9312);

希望这会对你有所帮助。如果您需要有关基本配置的更多详细信息,请问我。