проблема fsockopen при открытии порта в sphinx только в php

#php #sphinx #fsockopen

#php #sphinx #fsockopen

Вопрос:

У меня проблема при подключении php и только php к демону sphinx. Я протестировал пример sphinx php example test.php и сузил ее до проблемы с подключением.

У меня есть следующий фрагмент кода, который показывает проблему,

 <?php
$fp = @fsockopen ( '127.0.0.1', '9312', $errno, $errstr,300 );
if(!$fp) {
  echo "$errstr ($errno)";
}
?>
  

Всякий раз, когда он запускается из командной строки или браузера, я получаю следующую ошибку,

 Connection refused (111)
  

Я проверил следующее,

  1. searchd действительно запущен и на порту 9312
  2. searchd можно подключить с помощью telnet
  3. searchd можно подключить с помощью test.py в sphinx api
  4. php может подключаться к порту 80

Он работает на VPS Westhost, что, по-видимому, является проблемой, поскольку он отлично работает на моем локальном тестовом компьютере. У меня есть существующий код, который использовал Python для выполнения поиска по индексу без каких-либо проблем, так что это меня по-настоящему озадачило.

Некоторая дополнительная информация,

PHP 5.2.5 Sphinx 0.9.9-релиз

У кого-нибудь есть идеи, как я мог бы диагностировать и устранить эту проблему в дальнейшем?

Комментарии:

1. Как test.php и test.py выполняется? Оба из командной строки на VPS? Или test.py из командной строки и test.php «внутри» процесса apache? Или …?

2. Я тестировал как из командной строки, так и test.php из командной строки и из процесса apache, перейдя на веб-сайт.

Ответ №1:

Возможно, вы могли бы использовать cmd: netstat -an

Чтобы узнать, какой ip:port сервер Sphinx запущен, используйте этот ip и порт в fsocketopen() функции