各トランザクションに対してユーザー クレジット/カウント情報を更新しようとしています。1 秒あたり 2/4 を超えるトランザクションにヒットした場合、以下の更新ではカウント/ユーザー クレジット情報が更新されません。
基本的に2つの問題。
- いいえ、エラーメッセージで更新が行われないことがあります。
- エラー メッセージで失敗する更新: 412: 失敗: コード: 412 値: 前提条件 失敗した詳細 (ある場合): UpdateConditionNotSatisfied 要求で指定された更新条件が満たされませんでした。RequestId:1beb3fa9-9ad2-46f7-b8ee-af3a09300db7 時刻:2013-06-09T16:12:17.6797130Z .
SMS APIに Azure を使用して、RDMBS から NoSQL への移行のプロトタイプを作成しています。なぜそのようなことが起こるのか分かりません。
以下にコードを貼り付けます
public function update_credit_to_azure_table () {
// Create table REST proxy.
$tableRestProxy = ServicesBuilder::getInstance()
->createTableService($this->connectionString);
$result = $tableRestProxy->getEntity("tblapilogin", $this->apiusr , $this->apiusr);
$entity = $result->getEntity();
$new_api_balance = $this->global_api_credit - $this->credittodeduct;
$credit_used = $this->api_credit_used + $this->credittodeduct;
$entity->setPropertyValue("global_api_credit", $new_api_balance); //Update Balance.
$entity->setPropertyValue("api_credit_used", $credit_used); //credit used Updated .
try {
$tableRestProxy->updateEntity("tblapilogin", $entity);
echo "<br>New Blance is: " . $new_api_balance;
echo "<br>credit_used is: " . $credit_used;
}
catch(ServiceException $e) {
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."<br />";
}
}
オプティミスティック コンカレンシーを使用した update 関数は、ここでの主要なテストのようなものです。