コード例 #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
 /**
  *
  * 创建版本的meta信息
  * @param int $id
  * @param string $key
  * @param string $value
  *
  * @since 1.1.2
  */
 public function create($id, $key, $value)
 {
     $criteria = new CDbCriteria();
     $criteria->condition = "version_id=:version_id and meta_key =:meta_key";
     $criteria->params = array('version_id' => $id, 'meta_key' => $key);
     $meta = FileVersionMeta::model()->find($criteria);
     if (empty($meta)) {
         $meta = new FileVersionMeta();
         $meta["version_id"] = $id;
         $meta["meta_key"] = $key;
         $meta["meta_value"] = $value;
         $meta->save();
     } else {
         if ($meta["meta_value"] != $value) {
             $meta["meta_value"] = $value;
             $meta->save();
         }
     }
 }