/**
  * 静态方法, 单例统一访问入口
  * @return object  返回对象的唯一实例
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance) || !isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 /**
  * 为searchFile对象生成索引编制对象
  * @param string $nodeIds
  * @param string $signature
  */
 public function createTask($nodeIds, $signature)
 {
     $miniHost = PluginMiniSearchOption::getInstance()->getMiniyunHost();
     $siteId = MiniSiteUtils::getSiteID();
     $ids = explode(",", $nodeIds);
     //为索引服务器生成索引记录记录
     //剔除已生成的索引记录
     $nodes = PluginMiniSearchNode::getInstance()->getValidNodeList();
     $needCreateTaskNodeIds = array();
     foreach ($nodes as $node) {
         $existed = false;
         $nodeId = $node["id"];
         foreach ($ids as $id) {
             if ($id == $nodeId) {
                 $existed = true;
             }
         }
         if (!$existed) {
             array_push($needCreateTaskNodeIds, $node["id"]);
         }
     }
     foreach ($needCreateTaskNodeIds as $nodeId) {
         $task = SearchBuildTask::model()->find("file_signature=:file_signature and node_id=:node_id", array("file_signature" => $signature, "node_id" => $nodeId));
         if (!isset($task)) {
             $task = new SearchBuildTask();
             $task->file_signature = $signature;
             $task->node_id = $nodeId;
             $task->status = 0;
             $task->save();
         }
         //向迷你搜索服务器发送编制索引任务
         $this->buildTask($miniHost, $siteId, $task);
     }
 }
Esempio n. 3
0
 /**
  * 修改迷你搜索节点状态
  * @param string $name 节点名称
  * @param string $status 节点状态
  * @throws MiniException
  */
 public function modifyNodeStatus($name, $status)
 {
     $node = PluginMiniSearchNode::getInstance()->getNodeByName($name);
     if (empty($node)) {
         throw new MiniException(100303);
     }
     if ($status == 1) {
         //检查服务器状态,看看是否可以连接迷你搜索服务器
         $nodeStatus = PluginMiniSearchNode::getInstance()->checkNodeStatus($node["host"]);
         if ($nodeStatus == -1) {
             throw new MiniException(100304);
         }
     }
     return PluginMiniSearchNode::getInstance()->modifyNodeStatus($name, $status);
 }
Esempio n. 4
0
 /**
  * 场景1:检查各个迷你云节点状态
  * 使用方式:每隔15秒执行一次
  */
 public function actionCheckNodeStatus()
 {
     PluginMiniSearchNode::getInstance()->checkNodesStatus();
 }