sphinx — SphinxQL-Query-Builder. Предупреждение PHP: пакеты не в порядке. Ожидается 0 получено 1. Размер пакета = 0

Я запустил Sphinx 192.168.1.102:9312 и попытался выполнить запрос с моего клиентского компьютера:

<?php

require __DIR__.'/../vendor/autoload.php';

use Foolz\SphinxQL\SphinxQL;
use Foolz\SphinxQL\Connection;

// create a SphinxQL Connection object to use with SphinxQL
$conn = new Connection();
$conn->setParams(array('host' => '192.168.1.102', 'port' => 9312));

$query = SphinxQL::create($conn)
->select('id')
->from('documents')
->match('content', 'вася SENTENCE молодец');

$result = $query->execute(); // here occurs Warning

Он производит следующий вывод:

$ php sphinx.php
PHP Warning:  Packets out of order. Expected 0 received 1. Packet size=0 in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php on line 54
PHP Stack trace:
PHP   1. {main}() /var/www/sphinxql/src/sphinx.php:0
PHP   2. Foolz\SphinxQL\SphinxQL->execute() /var/www/sphinxql/src/sphinx.php:17
PHP   3. Foolz\SphinxQL\SphinxQL->compile() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:261
PHP   4. Foolz\SphinxQL\SphinxQL->compileSelect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:399
PHP   5. Foolz\SphinxQL\SphinxQL->compileMatch() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:559
PHP   6. Foolz\SphinxQL\Drivers\SimpleConnection->escape() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:467
PHP   7. Foolz\SphinxQL\Drivers\SimpleConnection->ping() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:191
PHP   8. Foolz\SphinxQL\Drivers\SimpleConnection->connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:80
PHP   9. mysqli->real_connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:54
PHP Warning:  mysqli::real_connect(): MySQL server has gone away in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php on line 54
PHP Stack trace:
PHP   1. {main}() /var/www/sphinxql/src/sphinx.php:0
PHP   2. Foolz\SphinxQL\SphinxQL->execute() /var/www/sphinxql/src/sphinx.php:17
PHP   3. Foolz\SphinxQL\SphinxQL->compile() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:261
PHP   4. Foolz\SphinxQL\SphinxQL->compileSelect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:399
PHP   5. Foolz\SphinxQL\SphinxQL->compileMatch() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:559
PHP   6. Foolz\SphinxQL\Drivers\SimpleConnection->escape() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:467
PHP   7. Foolz\SphinxQL\Drivers\SimpleConnection->ping() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:191
PHP   8. Foolz\SphinxQL\Drivers\SimpleConnection->connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:80
PHP   9. mysqli->real_connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:54
PHP Warning:  mysqli::real_connect(): Error while reading greeting packet. PID=10605 in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php on line 54
PHP Stack trace:
PHP   1. {main}() /var/www/sphinxql/src/sphinx.php:0
PHP   2. Foolz\SphinxQL\SphinxQL->execute() /var/www/sphinxql/src/sphinx.php:17
PHP   3. Foolz\SphinxQL\SphinxQL->compile() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:261
PHP   4. Foolz\SphinxQL\SphinxQL->compileSelect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:399
PHP   5. Foolz\SphinxQL\SphinxQL->compileMatch() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:559
PHP   6. Foolz\SphinxQL\Drivers\SimpleConnection->escape() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:467
PHP   7. Foolz\SphinxQL\Drivers\SimpleConnection->ping() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:191
PHP   8. Foolz\SphinxQL\Drivers\SimpleConnection->connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:80
PHP   9. mysqli->real_connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:54
PHP Warning:  mysqli::real_connect(): (HY000/2006): MySQL server has gone away in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php on line 54
PHP Stack trace:
PHP   1. {main}() /var/www/sphinxql/src/sphinx.php:0
PHP   2. Foolz\SphinxQL\SphinxQL->execute() /var/www/sphinxql/src/sphinx.php:17
PHP   3. Foolz\SphinxQL\SphinxQL->compile() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:261
PHP   4. Foolz\SphinxQL\SphinxQL->compileSelect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:399
PHP   5. Foolz\SphinxQL\SphinxQL->compileMatch() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:559
PHP   6. Foolz\SphinxQL\Drivers\SimpleConnection->escape() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php:467
PHP   7. Foolz\SphinxQL\Drivers\SimpleConnection->ping() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:191
PHP   8. Foolz\SphinxQL\Drivers\SimpleConnection->connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:80
PHP   9. mysqli->real_connect() /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:54
PHP Fatal error:  Uncaught Foolz\SphinxQL\Exception\ConnectionException: Connection Error: [2006]MySQL server has gone away in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php:60
Stack trace:
#0 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php(80): Foolz\SphinxQL\Drivers\SimpleConnection->connect()
#1 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php(191): Foolz\SphinxQL\Drivers\SimpleConnection->ping()
#2 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php(467): Foolz\SphinxQL\Drivers\SimpleConnection->escape('(@content \xD0\xB2\xD0\xB0\xD1...')
#3 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php(559): Foolz\SphinxQL\SphinxQL->compileMatch()
#4 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php(399): Foolz\SphinxQL\SphinxQL->compileSelect()
#5 /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/SphinxQL.php(261): Foolz\SphinxQL\SphinxQL->compile()
# in /var/www/sphinxql/vendor/foolz/sphinxql-query-builder/src/Drivers/SimpleConnection.php on line 60

Что случилось?

2

Решение

9312 предлагает порт API. Вам нужен протокол sphinql (на основе mysql), что-то вроде

listen = 192.168.1.102:9306:mysql41
2

Другие решения

Лучшим объяснением этой ситуации является то, что Sphinx действительно запускается по умолчанию на 9312. Однако для выдачи запросов SphinxQL на его сервер MySQL вам следует вместо этого подключиться к порту 9306.

$conn->setParams(array('host' => '192.168.1.102', 'port' => 9306));

Совет: в настоящее время этот класс Connection устарел. Правильный будет использовать Foolz\SphinxQL\Drivers\Mysqli\Connection вместо этого (тот же API).

2

По вопросам рекламы [email protected]