Exemplo n.º 1
0
 static function commint()
 {
     if (!self::$_inTransaction) {
         throw new \PDOException("Not in Transaction", -100);
     }
     foreach (\fl\db\connect::$connections as $dbhash => $connect) {
         if (in_array($dbhash, self::$_Transactions)) {
             $QueryBuilder = \fl\db\connect::getQueryerBuilder($dbhash);
             $QueryBuilder->getconnect()->commint();
         }
     }
     \fl\helpers\hook::unregister('DB:AfterConnect', "Transaction");
 }
Exemplo n.º 2
0
 public function getmasterpdo()
 {
     if (isset(connect::$connections[$this->_dbhash]['master'])) {
         return connect::$connections[$this->_dbhash]['master'];
     }
     if (!$this->dbexist()) {
         throw new \Exception('db config error.', -1);
     }
     // 主从库连接策略
     if ($this->disableMaster === 1) {
         throw new \Exception('db config error.', -1);
     }
     if ($this->disableMaster === 0) {
         $dbmain = $this->cfg->get('main');
         if (trim($dbmain['master']) === '') {
             $this->disableMaster = 1;
         } else {
             $this->disableMaster = -1;
         }
     }
     if ($this->disableMaster === 1) {
         throw new \Exception('master db not enable.', -2);
     }
     if (!in_array(strtolower($this->cfg->get('main', 'type')), \PDO::getAvailableDrivers())) {
         throw new \Exception('not support db.', -4);
     }
     try {
         $dbcfg = $this->cfg->get($this->cfg->get('main', 'master'));
         if (!$dbcfg) {
             throw new \Exception('master db not enable.', -2);
         }
         $pdo = new \PDO($this->cfg->get('main', 'type') . ':' . FL_RUNDIR . '/data/' . $dbcfg['dsn'], $dbcfg['user'], $dbcfg['passwd'], array(\PDO::ATTR_TIMEOUT => 1));
         $dbinit = $this->cfg->get($this->cfg->get('main', 'init'));
         foreach ($dbinit as $cmd) {
             $pdo->exec($cmd);
         }
     } catch (\Exception $e) {
         throw new \Exception($e->getMessage(), $e->getCode());
     }
     connect::$connections[$this->_dbhash]['master'] = $pdo;
     \fl\helpers\hook::runhook('DB:AfterConnect', array($this->_dbhash, true));
     return connect::$connections[$this->_dbhash]['master'];
 }