예제 #1
0
파일: DTC.php 프로젝트: karottc/dtc_jd
 /**
  * 整形字段自增
  *
  * @param   array   $key_arr, key数组
  * @param   string  $fld, 字段名,必须为整形字段
  * @param   int     $val, 自增值
  * @return  boolean
  */
 public function increment($key_arr, $fld, $val = 1)
 {
     $this->clearERR();
     if ($this->server == false && $this->init() == false) {
         return false;
     }
     $key = $this->config['KEY'];
     if (!isset($key_arr[$key])) {
         $this->errCode = 20071;
         $this->errMsg = "dtc config:{$this->dtcKey} increment key not set";
         return false;
     }
     $fields = $this->config['FIELDS'];
     if (!array_key_exists($fld, $fields)) {
         $this->errCode = 20072;
         $this->errMsg = "dtc config:{$this->dtcKey} increment no field name {$fld}";
         return false;
     }
     $val = intval($val);
     if ($val < 1) {
         $this->errCode = 20073;
         $this->errMsg = "dtc config:{$this->dtcKey} invalid increment value";
         return false;
     }
     $req = new tphp_ttc_request($this->server, TPHP_DTC_OP_UPDATE);
     if ($this->key_type == 1) {
         $errCode = $req->set_key($key_arr[$key]);
     } elseif ($this->key_type == 2) {
         $errCode = $req->set_key_str($key_arr[$key]);
     } else {
         $this->errCode = 200110;
         $this->errMsg = 'request failed';
         return false;
     }
     if ($errCode != 0) {
         $this->errCode = $errCode;
         $this->errMsg = "dtc config:{$this->dtcKey} increment:{$key}: set_key error";
         return false;
     }
     /*当前版本的dtc暂不支持多key的需求
     		if ( count($key_arr) > 1 ) {
     			// 处理多字段key情况
     			foreach ( $key_arr as $mk => $mv ) {
     				if ($mk == $key) {
     					continue;
     				}
     				$chk = $this->checkMultikey($mk, $mv);
     				if ( !$chk ) {
     					return $chk;
     				}
     				$eq = $this->eqv($req, $mk, $mv);
     				if ( $eq != 0 ) {
     					$this->errCode = 20075;
     					$this->errMsg  = "dtc config:{$this->dtcKey} increment:{$key}: set multikey error";
     
     					return false;
     				}
     			}
     		}*/
     $add = $req->add($fld, $val);
     if ($add != 0) {
         $this->errCode = 20076;
         $this->errMsg = "dtc config:{$this->dtcKey} increment:{$key}: add error";
         return false;
     }
     $result = new tphp_ttc_result();
     $req->execute($result);
     $this->result = $result;
     $errCode = $result->result_code();
     if ($errCode != 0) {
         $this->dtcCode = $errCode;
         $this->errCode = 20077;
         $this->errMsg = "dtc config:{$this->dtcKey} increment:{$key} error,error code:{$errCode}";
         return false;
     }
     return true;
 }