/**
  * 静态方法, 单例统一访问入口
  * @return object  返回对象的唯一实例
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance) || !isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 /**
  *根据文件的Hash值报告索引成功
  * @param string $signature 文件hash值
  * @param string $nodeId 迷你搜索ID
  * @return array
  */
 public function report($signature, $nodeId)
 {
     //编制索引成功
     $buildSuccess = PluginMiniSearchFile::getInstance()->buildSuccess($signature, $nodeId);
     if ($buildSuccess) {
         //为迷你搜索节点服务器增加索引数
         PluginMiniSearchNode::getInstance()->newBuildFile($nodeId);
         //删除索引任务
         PluginMiniSearchBuildTask::getInstance()->delete($signature, $nodeId);
     }
     return array("success" => true);
 }
 /**
  * 将文本内容存入数据库
  * @param $signature 文件hash值
  * @return bool
  */
 public function create($signature)
 {
     $item = SearchFile::model()->find("file_signature=:file_signature", array("file_signature" => $signature));
     if (!isset($item)) {
         $item = new SearchFile();
         $item['file_signature'] = $signature;
         $item['node_ids'] = "";
         $item->save();
         //生成索引编制任务
         PluginMiniSearchBuildTask::getInstance()->createTask($item->node_ids, $signature);
     }
     return true;
 }
 /**
  * 场景1:新拉上迷你搜索节点时,系统中已有文件,通过这个指令为新节点编制所有文件的索引
  * 使用方式:手动执行
  */
 public function actionBuildNewNode()
 {
     $count = PluginMiniSearchBuildTask::getInstance()->buildNewNode();
     echo "本次索引的文件有:" . $count . "个\n";
 }