More Related Content
Similar to サーバー未経験者がソーシャルゲームを通して知ったサーバーの事 (20)
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
- 23. 例えばこんなコード
2011∼
# この中はトランザクション内という仮定
try:
# プレイヤーの体⼒力力を消費
player.consume_̲vitality()
# プレイヤーの経験値アップ
player.add_̲experience()
except:
# エラー起きたらDBをロールバック
transaction.rollback()
else:
# 問題なければDB更更新。経験値が増える。
transaction.commit()
体力→KVS
経験値→DB
※実際のコードとは異なります
- 24. 例えばこんなコード
2011∼
# この中はトランザクション内という仮定
try:
# プレイヤーの体⼒力力を消費
player.consume_̲vitality()
# プレイヤーの経験値アップ
player.add_̲experience()
except:
←ここでエラー
# エラー起きたらDBをロールバック
transaction.rollback()
else:
# 問題なければDB更更新。経験値が増える。
transaction.commit()
体力→KVS
経験値→DB
- 26. どうなる?
# この中はトランザクション内という仮定
try:
# プレイヤーの体⼒力力を消費
player.consume_̲vitality()
# プレイヤーの経験値アップ
player.add_̲experience()
except:
# エラー起きたらDBをロールバック
transaction.rollback()
else:
# 問題なければDB更更新。経験値が増える。
transaction.commit()
2011∼
体力は消費される
経験値付与でエラーが起きる
- 27. どうなる?
# この中はトランザクション内という仮定
try:
# プレイヤーの体⼒力力を消費
player.consume_̲vitality()
2011∼
体力は消費される
経験値付与でエラーが起きる
# プレイヤーの経験値アップ
player.add_̲experience()
except:
# エラー起きたらDBをロールバック
transaction.rollback()
else:
# 問題なければDB更更新。経験値が増える。
transaction.commit()
体力だけが消費される
ユーザーの不利益となる
- 31. 順番を変える
2011∼
# この中はトランザクション内という仮定
try:
# プレイヤーの体⼒力力を消費
# player.consume_̲vitality()
# プレイヤーの経験値アップ
player.add_̲experience()
except:
# エラー起きたらDBをロールバック
transaction.rollback()
else:
# 問題なければDB更更新。経験値が増える。
transaction.commit()
# プレイヤーの体⼒力力を最後に消費
player.consume_̲vitality()
DB更新後に移動