コード例 #1
0
 /**
  * 为文件增加冗余备份节点
  * @param $signature
  * @param $nodeId
  */
 public function addReplicateNode($signature, $nodeId)
 {
     $version = MiniVersion::getInstance()->getBySignature($signature);
     if (!empty($version)) {
         $meta = FileVersionMeta::model()->find("version_id=:version_id and meta_key='store_id'", array("version_id" => $version["id"]));
         if (isset($meta)) {
             $value = $meta->meta_value;
             $isExist = false;
             $ids = explode(",", $value);
             foreach ($ids as $id) {
                 if ($id === $nodeId) {
                     $isExist = true;
                 }
             }
             if (!$isExist) {
                 $value .= "," . $nodeId;
                 $meta->meta_value = $value;
                 $meta->save();
                 $ids = explode(",", $value);
                 if (count($ids) >= 3) {
                     //整个文件冗余备份成功
                     PluginMiniStoreVersion::getInstance()->replicateSuccess($signature);
                 }
             }
         } else {
             $meta = new FileVersionMeta();
             $meta->version_id = $version["id"];
             $meta->meta_value = $nodeId;
             $meta->save();
         }
     }
 }
コード例 #2
0
 /**
  * 根据versionId删除所有记录
  * @param $versionId
  */
 public function deleteByVersionId($versionId)
 {
     FileVersionMeta::model()->deleteAll("version_id=:version_id", array("version_id" => $versionId));
 }