Transaction.class.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace KIF\Db;
  3. use KIF\Exception\ParamsException;
  4. use KIF\Db\MySQLi;
  5. use KIF\Core\Config;
  6. /**
  7. * 数据库事务类
  8. * 主要是包装 MySQLite 的事务方法。供前端类、前端php响应页面调用。
  9. * @author gaoxiaogang@gmail.com
  10. *
  11. */
  12. class Transaction {
  13. /**
  14. * 数据库实例
  15. *
  16. * @var KIF\Db\MySQLi
  17. */
  18. protected $db;
  19. public function __construct($cluster_flag = 'default') {
  20. $appConfig = Config::getInstance()->current();
  21. $dbConfig = $appConfig['db'];
  22. if (!$dbConfig || !isset($dbConfig[$cluster_flag]) || !is_string($dbConfig[$cluster_flag])) {
  23. throw new ParamsException("load config error:{$dbConfig}");
  24. }
  25. $this->db = new MySQLi($dbConfig[$cluster_flag]);
  26. }
  27. /**
  28. * 开始事务
  29. * @return false | string false:失败;string:成功返回事务标志
  30. */
  31. public function start() {
  32. return $this->db->startTransaction();
  33. }
  34. /**
  35. * 提交事务
  36. * @param string $strTransactionId
  37. * @return Boolean
  38. */
  39. public function commit($strTransactionId) {
  40. return $this->db->commit($strTransactionId);
  41. }
  42. /**
  43. * 回滚事务
  44. * @param string $strTransactionId
  45. * @return Boolean
  46. */
  47. public function rollback($strTransactionId) {
  48. return $this->db->rollback($strTransactionId);
  49. }
  50. /**
  51. *
  52. * 开始使用主库。后续的所有读查询,都会被强制到主库
  53. *
  54. * @return String 返回一串标志,供$this->restore 方法使用,用于恢复上一个状态
  55. */
  56. public function beginUseMaster() {
  57. return $this->db->beginUseMaster();
  58. }
  59. /**
  60. * 恢复采用 $strMasterStatusId 为句柄保存的上次的状态
  61. *
  62. * @param String $strMasterStatusId
  63. * @return Boolean
  64. *
  65. */
  66. public function restore($strMasterStatusId) {
  67. return $this->db->restore($strMasterStatusId);
  68. }
  69. }