#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)
Я проверил следующее,
- searchd действительно запущен и на порту 9312
- searchd можно подключить с помощью telnet
- searchd можно подключить с помощью test.py в sphinx api
- 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()
функции