Sphinxsearch периодически выдает ошибку при поиске rt-индекса с помощью адаптера zf2 db

У меня периодически возникают проблемы с довольно сложной поисковой системой. Время от времени я писал PHP-демон, который добавляет новый контент в нашу базу данных, а RT-индекс для sphinx создает загадочное исключение.

Сообщение просто «Заявление не может быть выполнено».

Код, который вызывает это (обрезается):

<?php
$itemIds = Array( 79555 );
$index = 'doc';
$adapter = $this->dbAdapter;

$qi = function($name) use ($adapter) {
return $adapter->platform->quoteIdentifier($name);
};

$checkSql = '
SELECT * FROM
'. $qi( $index ) . '
WHERE
id  = ' . (int)$itemIds[0];

$checkStatement = $this->dbAdapter->query($checkSql);
$result = $checkStatement->execute();

Похоже, что исключение не возникает ни при каком конкретном триггере, но сохраняется с момента его первого запуска до момента, когда я перезапускаю демон. Я вывел sql, сгенерированный Zend \ DB \ Adapter, и идентификаторы баров были разными, похоже, в запросах нет различий между запросами, которые выполняются успешно, и запросами, которые не выполняются.

Там нет связанной ошибки в журналах sphinx (что я вижу), и если я загружаю нейтрон / sphinxsearch-api / sphinxapi.php и запускаю GetLastError() он возвращает пустую строку.

Я думаю, что это ошибка соединения — или, возможно, неправильная конфигурация с конфигурацией sphinx, делающей его тайм-аут, но я не уверен.

0

Решение

Похоже, вы используете постоянные соединения. Иногда соединение может быть сброшено, но ваш код этого не учитывает и все еще пытается использовать соединение, которое было закрыто. Может быть, попробуйте проверить на наличие ошибки, и, если она возникнет, переподключится.

Короче говоря, сделайте код устойчивым к соединению, которое иногда закрывается.

1

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

Других решений пока нет …

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