在我的一些服务器上,执行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在哪里(我使用手动编译安装)并且不确定这是不是一个好主意。
任何人都有任何想法?
答案 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);
希望这会对你有所帮助。如果您需要有关基本配置的更多详细信息,请问我。