0
我有一個相當複雜的搜索系統的間歇性問題。每隔一段時間我寫一個PHP守護進程,它會向我們的數據庫添加新的內容,而獅身人面像的RT索引會引發一個神祕的異常。Sphinxsearch定期拋出錯誤,通過zf2數據庫適配器搜索rt索引
消息簡直是「聲明無法執行」。
,導致它(修剪)代碼:
<?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();
顯得異常不會對任何特定觸發發生,但是從它的第一個拋給我重新啓動守護進程的時間的時間仍然存在。我已經輸出了由Zend \ DB \ Adapter生成的sql和bar id不同,在查詢失敗後,似乎沒有區別。
在sphinx日誌中沒有關聯的錯誤(我可以看到),如果我加載neutron/sphinxsearch-api/sphinxapi.php並運行GetLastError()
,它將返回一個空白字符串。
我的想法是,這是一個連接錯誤 - 或者可能是sphinx配置的錯誤配置使其超時,但我不確定。
這聽起來像你使用持久連接。在連接可能被刪除的時候,但是你的代碼沒有考慮到這一點,並且仍然試圖使用已經關閉的連接。也許嘗試檢查錯誤,如果得到它,重新連接。 – barryhunter 2014-09-25 10:51:17
感謝您的提示。我會研究它。 – thelastshadow 2014-09-25 12:07:22
@barryhunter你應該添加你的評論作爲答案 - 它解決了這個問題。 – thelastshadow 2014-09-29 10:18:46