主页 > 编程资料 > PHP >
发布时间:2015-10-08 作者:网络 阅读:294次

如果sphinx在运行中,要indexer时,需要加上--rotate参数,这样索引完就直接生效了。  

原因是sphinx的searchd在启动时会创建一个 .spl 锁文件,并在关闭时会删除它。

在indexer创建索引时如果发现有 .spl文件,则不会创建新索引,因为这时已经标志sphinx正在运行中,除非使用 –rotate。 

 rotate运行机制  ->indexer完成索引   ->发送SIGHUP 给searchd(同时在终端输出索引已经完成) ->searchd接到中断信号->等待所有子进程退出 ->重命名 当前索引为旧索引为 .old ->重命名 .new 索引文件作为当前索引 ->尝试加载当前索引文件->如果加载失败,searchd会把.old文件回滚为当前文件,并把刚建立的新索引重命名为 .new ->加载成的话:完成无缝切换 

 ------------------------------------------  

手动重启的两种办法:  

1. 关闭searchd :killall -9 searchd 重启 searchd :searchd -c ../sphinx.conf  2. 关闭:searchd --stop 启动:searchd

关键字词: