sphinxsearch возвращает «не удалось отправить версию протокола клиента» - PullRequest
5 голосов
/ 01 февраля 2010

На некоторых из моих серверов выполнение php-запроса sphinx возвращает эту ошибку. В поиске в Google я не могу найти ничего, кроме того, что является причиной того, почему появилась ошибка:

// 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 ]

9 голосов
/ 01 февраля 2010

У меня просто была такая же проблема на моем сервере, и я понял, что вообще не запускал демон searchd.

Надеюсь, это поможет

0 голосов
/ 07 января 2016

У меня та же проблема со Сфинксом 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);

Надеюсь, это поможет вам. А если вам нужны подробности об основной конфигурации, просто спросите меня.

0 голосов
/ 23 декабря 2015

Проблема может быть с неправильным портом. В моем sphinx.config было установлено два порта для прослушивания:

searchd{
   listen = 9312
   listen = 9306:mysql41
}

Когда я пытался подключиться через порт 9306, я получил ошибку, упомянутую выше. Изменение на 9312 решило проблему.

0 голосов
/ 06 июля 2015

Прежде всего убедитесь, что вы используете подходящий ip для библиотеки api. То, что использует ip, вы можете увидеть в

sphinx.config section searchd {}.

Если все в порядке, следующий шаг - увидеть статус сфинкса

searchd --status

...