我有一個相當大的web應用程序,它將大量數據存儲在MySQL數據庫中。我也有一個PHP腳本,對這些數據做了一些工作。從PHP調用sphinx索引器
因爲php腳本的工作非常激烈,所以我在多個獨立的服務器上運行它。 基本上,腳本以編程方式將隨機數據塊下載到它自己的MySql數據庫中,調用sphinx索引器,然後使用sphinx來完成它的一些工作。
PHP腳本通過CLI運行並無限期地執行。
腳本將數據下載到本地數據庫之後,它通過調用索引:
$response = exec("indexer results_combined --rotate");
echo PHP_EOL.$response;
而且每次迭代的迴應是:
rotating indices: successfully sent SIGHUP to searchd (pid=3631)
我看到的問題是,第一迭代通過索引器運行,php使用sphinx來完成它的工作併產生結果。
但是第二次使用索引器報告運行正常,但任何使用php Sphinx API的調用都不會返回任何結果。
sphinx-> query()命令對於所有查詢都不返回任何內容,而sphinx-> getLastError()不顯示任何內容。
如果我重新啓動腳本,它會再次運行。 我甚至試圖在索引器調用後延遲,以防SIGHUP和實際能夠查詢索引之間存在延遲,但這沒有幫助。
以前有沒有人見過類似的東西?
非常感謝
編輯:
行,所以我提出這個問題後,我靈機一動。似乎一旦索引器被第二次調用,獅身人面像客戶端需要被重新創建。
這會導致一個新的連接到獅身人面像似乎然後找到數據。 我會接受任何人的答案,可以解釋爲什麼!